rnqoj-93-吃西瓜-dp
来源:互联网 发布:国泰君安 mac 编辑:程序博客网 时间:2024/04/28 20:01
又见神题。。。。
num[i][j][k]; //i层,以(j,k)和(0,0)为对角围成的面积
那么num[i][j][k]=num[i][j-1][k]+num[i][j][k-1]-num[i][j-1][k-1]+ks;(ks代表第i层j行k列的数字)
在ts层上以(i,j)和(k,l)围成的面积为:num[ts][i][j]-num[ts][k][j]-num[ts][i][l]+num[ts][k][l];
如图所示:
欲求红色的面积等于黑色框起来的面积-黄色框起来的面积-蓝色框起来的面积+绿色的面积;
这样,对于同一个(i,j)和(k,l)都能在O(1)的时间内算出来。
然后对于层次上运用最长字段和的O(n)算法,算出在高度上的最大连续数。
#include<stdio.h>#include<string.h>#include<algorithm>#include<iostream>using namespace std;int num[51][51][51];//i层,(j,k)到(0,0)围成的面积int qiu[51];int top;int maxn;void pan(){ int ns=0; int i; for(i=0;i<top;i++) { ns+=qiu[i]; maxn=max(ns,maxn); if(ns<0)ns=0; }}int main(){ int h,m,n; while(~scanf("%d%d%d",&h,&m,&n)) { int i,j,k,l,ts; for(i=1;i<=h;i++) { for(j=1;j<=m;j++) { for(k=1;k<=n;k++) { int ks; scanf("%d",&ks); num[i][j][k]=num[i][j][k-1]+num[i][j-1][k]-num[i][j-1][k-1]+ks; } } } maxn=-99999999; for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { for(k=0;k<i;k++) { for(l=0;l<j;l++) { top=0; for(ts=1;ts<=h;ts++) { qiu[top++]=num[ts][i][j]-num[ts][k][j]-num[ts][i][l]+num[ts][k][l]; } pan(); } } } } cout<<maxn<<endl; } return 0;}
- rnqoj-93-吃西瓜-dp
- 【DP~最大子立方体】吃西瓜
- rnqoj-73-展演队型-dp
- rnqoj-94-飙车-dp
- 【吃西瓜】解题报告
- 【動態規劃】吃西瓜
- rnqoj-103-最大利润-dp
- 【动态规划】【RQNOJ】吃西瓜
- 吃了个大西瓜
- 吃西瓜的刘备
- rnqoj-82-又上锁妖塔-dp
- rnqoj-99-配置魔药-dp
- 其实人是有潜力的,比如吃西瓜
- 女人什么情况下不宜吃西瓜
- 解析:吃西瓜的好处与禁忌
- 【最大立方体和】吃西瓜rqnoj93
- codeforces-4A-Watermelon( 吃西瓜==吃水果 )
- RNQOJ-328(POJ-1185)-状态压缩DP
- 《30天自制操作系统》之——第05天
- 图说内存与指针
- dbca silent responseFile Not all required options provided for the command "createDatabase".Please r
- 使用java读写properties文件属性
- 中断线屏蔽与禁用什么区别?
- rnqoj-93-吃西瓜-dp
- vb实验
- grub恢复
- 关于iOS6应用中第三方类库不支持armv7s的问题解决
- 裸辞的迷茫
- ios文档
- Xcode 5设置Deployment Target
- vs配置不依赖其他包路径
- 有关三目运算符