1,列舉每個開始的左上角的座標,然後列舉矩形的長和寬,用陣列來記錄每一列的前n行和,這個陣列可以是二維的,也可以是一維,用滾動來實現。用sum[i]來記錄前n列和,更新ans,即可。
2,列舉矩形的上下界限,將二維陣列降為一維陣列的連續子串行的最大值。dp一下就可以了。
#include
using
namespace
std;
int a[160][160];
int lie[160], sum[160];
int main()
long
long ans = -1e7;
for(int x = 0; x < n; x++)
for(int y = 0; y < n; y++)
for(int j = 0; j < n; j++)
for(int i = 0; i < n; i++)
return
0;}
高效演算法設計專項 UVa 10827
這道題用o n 4 的方法水過了 就是把原來n n的矩陣擴充套件成2n 2n的矩陣,然後預處理出以 i,j 為右下角的矩陣的元素和。然後再列舉矩陣的左上角和右下角,當矩陣的長或寬大於n時,直接continue即可。include include include include using names...
uva 1452 dp 約瑟夫環
uva 1452 jump 約瑟夫環。對於乙個n個人,沒k個踢出去的約瑟夫環。踢出乙個人後,環成了 0,1,2,k 2,k,k 1,n 對其從k為起點重新編號 n k 1,n k 2,n 1,0,1,2,n k 這樣變成了乙個 n 1,k 的約瑟夫環問題。於是得到轉移方程 dp i dp i 1 k...
UVA133 約瑟夫環變種
為了縮短領救濟品的隊伍,nnglrp決定了以下策略 每天所有來申請救濟品的人會被放在乙個大圓圈,面朝裡面。選定乙個人為編號 1 號,其他的就從那個人開始逆時針開始編號直到 n。乙個 一開始逆時針數,數 k 個申請者,然後另乙個 第 n 個始順時針方向數 m 個申請者,這兩個人就被送去再教育。如果兩個...