HDU1081 最大字段和 压缩数组(单调队列优化)
最大字段和题型,推荐做题顺序:
HDU1003
HDU1024
HDU1081
ZOJ2975
ZOJ2067
#include<cstdio> #include<cstdlib> #include<iostream> #include<memory.h> using namespace std; int n,a[110][110]; int y[110],maxp[110]; int Max; int main() { int i,j,k; while(~scanf("%d",&n)){ for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%d",&a[i][j]); Max=a[1][1]; for(i=1;i<=n;i++) { memset(y,0,sizeof(y)); memset(maxp,0,sizeof(maxp)); for(j=i;j<=n;j++) { for(k=1;k<=n;k++){ y[k]+=a[j][k]; maxp[k]=y[k]; maxp[k]=max(maxp[k-1]+y[k],maxp[k]); Max=max(Max,maxp[k]); } } } printf("%d\n",Max); } return 0; }
It is your time to fight!