Luogu P1736 創意吃魚法

2021-09-09 00:27:39 字數 683 閱讀 9275

傳送門

解題思路:對角線可以是從左上角到右下角,也可以是從右上角到左下角,所以答案需要求兩次,去最大的。先討論從左上角到右下角。dp[i][j]為以(i,j)點為右端點的能吃到的最多的魚,由於需要子矩陣的其他地方沒有魚,所以需要兩個輔助陣列,分別統計(i,j)這點向上有多少個連續的0,向左有多少個連續的0。所以我們可以得到 dp[i][j]=min(dp[i−1][j−1], up[i−1][j], left[i][j−1])+1

從右上角到左下角也是一樣的討論。

#includeusing namespace std;

typedef long long ll;

const ll inf=0x3f3f3f3f;

const int maxn=2505;

int n,m,a[maxn][maxn];

int dp[maxn][maxn],up[maxn][maxn],row[maxn][maxn];

int main()

else

} }memset(dp,0,sizeof(dp));

memset(row,0,sizeof(row));

for(int i=1;i<=n;++i)

else

} }cout

}

luoguP1736 創意吃魚法(DP)

傳送門 f i j 0 表示從右下角到左上角,以 i,j 為起點能延伸的最大值 f i j 1 表示從左下角到右上角,以 i,j 為起點能延伸的最大值 up i j 表示 i,j 上面有多少個0 left i j 表示 i,j 左邊有多少個0 right i j 表示 i,j 右邊有多少個0 f i...

LG P1736 創意吃魚法

終於找到一點dp的門路了 但還是差的遠 這個是為數不多的我自己寫出來狀態轉移方程的乙個dp題 回到家中的貓貓把三桶魚全部轉移到了她那長方形大池子中,然後開始思考 到底要以何種方法吃魚呢 貓貓就是這麼可愛,吃魚也要想好吃法 她發現,把大池子視為01矩陣 0表示對應位置無魚,1表示對應位置有魚 有助於決...

P1736 創意吃魚法

題意 有乙個n m的01矩陣,求最長的一條由1構成的斜線的長度,這條斜線所在矩陣的其它位置都必須是0 當前的狀態時右下角那個1,x表示這個位置向左最多可以延申x個0,y表示這個位置向上最多可以延申y個0。那麼就清楚了,這個位置的狀態由左上方的那個1以及x和y轉移,是它們中最小的那個值 1 dp i ...