創意吃魚法

2022-05-05 17:57:12 字數 1172 閱讀 3562

傳送門

題目簡單描述:找到給定矩形中,最大的,只有對角線為1的正方形。

既然又是從矩形找正方形,於是又想故技重施使用懸線法,預處理每個值為1的點到周圍最多能拓展幾個值為0的點。不過之後發現這樣做還是很暴力,每次只能從左上(右上)轉移,想著當時暴力判斷能否轉移。

但是其實沒必要這麼做,而且這樣複雜度也比較高。正解的確預處理了每個點能拓展的距離,不過下面就不用了(因為你是從上向下走的),之後還是老套路,只能從左上(右上)三個點轉移過來,不過這次左上(右上)是實際的dp值,其他方向都是事先預處理好的最大能拓展為0的長度。

這個取最小和上一道題是同理的,都要滿足約束條件。之後這個題就很愉快的完成了。

看一下**。

#include#include

#include

#include

#include

#include

#include

#define rep(i,a,n) for(int i = a;i <= n;i++)

#define per(i,n,a) for(int i = n;i >= a;i--)

#define enter putchar('\n')

using

namespace

std;

typedef

long

long

ll;const

int m = 2505

;const

int inf = 1000000009

;int

read()

while(ch >= '

0' && ch <= '9'

)

return ans *op;

}int

n,m,l[m][m],u[m][m],dp[m][m],ans;

bool

g[m][m];

intmain()

memset(dp,

0,sizeof

(dp));

memset(l,

0,sizeof

(l));

rep(i,

1,n)

per(j,m,1)

printf(

"%d\n

",ans);

return0;

}

LG P1736 創意吃魚法

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

Luogu P1736 創意吃魚法

傳送門 解題思路 對角線可以是從左上角到右下角,也可以是從右上角到左下角,所以答案需要求兩次,去最大的。先討論從左上角到右下角。dp i j 為以 i,j 點為右端點的能吃到的最多的魚,由於需要子矩陣的其他地方沒有魚,所以需要兩個輔助陣列,分別統計 i,j 這點向上有多少個連續的0,向左有多少個連續...

P1736 創意吃魚法

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