P1169 棋盤製作

2021-08-21 21:17:33 字數 2389 閱讀 6732

這裡是題幹:

這是什麼優化都沒有的。。。六次方,爽的一批~~~

#include

using

namespace

std;

int n,m,a[2100][2100],f[100][100][100][100];

bool judge(int i,int j,int x,int y)

if(((k-i)%2==0&&(l-j)%2==1)||((k-i)%2==1&&(l-j)%2==0))}}

return

true;

}void prepare()}}

}}

}int main()

}prepare();

int ans1=0,ans2=0;

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

}cout

0;}

我們可以用乙個s[x][y]表示從第(x,y)這個位置能往上走,多少個位置,這樣時間可以降到5次方,程式如下:

#include

using

namespace

std;

int n,m,a[2100][2100],f[100][100][100][100],s[100][100];

void prechuli()

}}bool judge(int i,int j,int x,int y)

return

true;

}void prepare()}}

}}

}int main()

}prechuli();

prepare();

int ans1=0,ans2=0;

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

}cout

0;}

和s[x][y]的思路相同,我們可以s1[x][y]表示橫著的最大值,這裡我們要介紹乙個快速尋找乙個陣列的最小值的方法:

f[i][j]表示從a[i]開始到二的j次方結束

降到四次方

程式實現如下:

#include

#include

using

namespace

std;

int n,m,a[2100][2100],s[2100][2100],s1[2100][2100],f[2100][2100][12],p[2100];

int ans1=0;

void prechuli()

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

s1[i][1]=1;

for(int j=2;j<=m;++j)

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

p[1]=0;

for(int i=2;i<=m;++i)

p[i]=p[i/2]+1;

}bool judge(int i,int j,int x,int y)

bool check(int mid)

}return

false;

}int erfen(int l,int r)

return r;

}void prepare()}}

}}

}int main()

} prechuli();

prepare();

int ans2=erfen(1,min(n,m));

cout

0;}

摘自洛谷題解~~~

求最大矩形:(借鑑了p4147題解中xg_zepto的思路)

建立 l[i][j],r[i][j] 儲存座標 (i,j) 左右最近的障礙位置

建立 l[i][j],r[i][j] 儲存座標 (i,j) 在矩形內左右最遠可以取到的位置

建立 h[i][j] 儲存座標 (i,j) 所在矩形的高度

座標 (i,j) 所在矩形面積為 h[i][j]*(r[i][j]-l[i][j]-1)

#include

#include

using namespace std;

int n,m,a[2100][2100],s[2100][2100];

int ans1=0,ans2=0,squ[2100][2100],l[2100][2100],r[2100][2100];

void prechuli()}}

void yuchuli()

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

void prepare()}}

int main()

} prechuli();

yuchuli();

prepare();

cout}

洛谷P1169 棋盤製作

懸線法 好像 是可以解決給定矩陣中滿足條件的最大子矩陣的樣子 先就提論題 設 f i j 為從 i,j 點擴充套件最多能達到的最左端的點 color 設l i j 為從 i,j 點擴充套件能達到的最右端的點 color 設up i j 為從 i,j 點能擴充套件到的上界 然後就是 color 從左往...

洛谷 P1169 棋盤製作(懸線法DP)

題目大意 有乙個0,1矩陣。求其中的0,1交錯的最大子正方形矩陣和長方形矩陣的面積。解題思路 求這種最大子矩陣的題目很可能是懸線法。這個矩陣某個格仔 i,j 向左可能延伸到多遠,向右可能延伸到多遠,向上可能延伸到多遠,然後在確定縱向可以向下延伸時候利用轉移公式 up i j up i 1 j 1 l...

洛谷 P1169 題解

請你在乙個黑白矩陣中選出乙個長方形 含正方形 和正方形的子矩陣,使得所有相鄰的點顏色不一樣。矩陣大小 兩條邊都 2000 2000 2 000輸入 3 31 0 1 0 1 0 1 0 0輸出4 6解釋給定矩陣 正方形 長方形 我的控制台是萌萌噠 ffc0cb粉色 乙個小技巧 如果您的控制台是像我的...