uva10827 - Maximum sum on a torus
来源:互联网 发布:zookeeper java 实例 编辑:程序博客网 时间:2024/06/08 00:13
这题最大的收获,不是对于dp的思考,而是以非循环量代替循环量来简化问题的思想。
这题是maximum sum的升级版,不同之处在于数组可以循环,解决办法就是再在三个方向上复制原数组,不过需要注意控制子矩形的尺寸不能超过n*n。
开始用类似上题的办法dp,超时,后来用了暴力加上一些性质才ac.
#include<cstdio>#include<cstring>#include<algorithm>#define MAX 80using namespace std;int s[MAX*2-1][MAX*2-1],sum[MAX*2-1][MAX*2-1];int main(){ int t,n,i,j,p,q,maxx,temp; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&s[i][j]); for(i=n;i<n*2-1;i++) for(j=0;j<n;j++) s[i][j]=s[i-n][j]; for(i=0;i<n;i++) for(j=n;j<2*n-1;j++) s[i][j]=s[i][j-n]; for(i=n;i<n*2-1;i++) for(j=n;j<n*2-1;j++) s[i][j]=s[i-n][j-n]; maxx=-100000000; //sum[0][0]=s[0][0]; for(i=0;i<n*2-1;i++) { for(j=0;j<n*2-1;j++) { sum[i][j]=s[i][j]; if(j-1>=0) sum[i][j]+=sum[i][j-1]; if(i-1>=0) sum[i][j]+=sum[i-1][j]; if(j-1>=0&&i-1>=0) sum[i][j]-=sum[i-1][j-1]; } } for(i=0;i<n*2-1;i++) { for(j=0;j<n*2-1;j++) { for(p=i;p<i+n&&p<n*2-1;p++) { for(q=j;q<j+n&&q<n*2-1;q++) { temp=sum[p][q]; if(j-1>=0) temp-=sum[p][j-1]; if(i-1>=0) temp-=sum[i-1][q]; if(j-1>=0&&i-1>=0) temp+=sum[i-1][j-1]; if(temp>maxx) maxx=temp; } } } } printf("%d\n",maxx); } return 0;}
0 0
- UVA10827 - Maximum sum on a torus
- uva10827 - Maximum sum on a torus
- Maximum sum on a torus uva10827
- [动态规划]UVA10827 - Maximum sum on a torus
- uva10827 - Maximum sum on a torus(圆环上的最大和)
- uva10827-Maximum sum on a torus(矩阵最大和的变形)
- uva10827 - Maximum sum on a torus(最大子矩阵和变形)
- Maximum sum on a torus
- UVa 10827 - Maximum sum on a torus
- UVa 10827 - Maximum sum on a torus
- 10827Maximum sum on a torus
- uva 10827 - Maximum sum on a torus
- Maximum sum on a torus Uva 10827
- 10827 - Maximum sum on a torus
- Uva-10827-Maximum sum on a torus
- uva 10827 - Maximum sum on a torus
- UVA - 10827 Maximum sum on a torus
- UVa:10827 Maximum sum on a torus
- Linux下的局域网小工具
- 注册表修改
- Java List 的深拷贝
- C++实现在正方体8个顶点上放数字使得三组相对的面上的4个顶点的和都相等
- Apache CXF requires java version 1.5 or higher. You are currently usin g java version 1.7.
- uva10827 - Maximum sum on a torus
- Android ListView及异步加载图片问题汇总
- Linux tar打包命令
- const和指针的交叉问题
- 数据库链接池的使用,对应于多数据库(用c3p0实现Apache—DBUtils框架)
- 什么是EF, 及 Entity Framework Demo简单搭建环境
- 【axure手机原型】移动应用原型设计新手引导
- atoi()函数
- linux OOM-killer机制(杀掉进程,释放内存)