JZOJ 5393. 【NOIP2017提高A组模拟10.5】Snake vs Block
Description
Input
Output
Sample Input
5
-2 0 0 1 -2
0 2 0 0 0
-4 -3 -2 -3 -7
1 0 0 0 0
0 -2 0 -2 0
0
Sample Output
8
Data Constraint
Hint
Solution
看到这样分层的最优值问题,毫无疑问就是DP了。
考虑把“豆豆”和“ 砖块”一起DP,方便处理。
设 F[i][j][k]F[i][j][k] 表示做到前 ii 行、蛇的长度还剩下 jj 、从第 kk 列转移出去的最大得分。
设 G[j][l][r]G[j][l][r] 表示蛇的长度还剩下 jj ,当前行在第 ll 列和第 rr 列来回移动仍未死亡的最大得分。
显然,初始状态为:
F[0][4][3]=0F[0][4][3]=0
对于每一个 ii ,首先令:
G[j][k][k]=G[j−a[i][k]][k][k]+Max(−a[i][k],0)G[j][k][k]=G[j-a[i][k]][k][k]+Max(-a[i][k],0)
接着再往两边扩展(即从 ll 或 rr 转移过来, 注意若有隔板则不能转移):
G[j][l][r]=Max{G[j−a[i][l]][l+1][r]+Max(−a[i][l],0),G[j][l][r]=Max\{G[j-a[i][l]][l+1][r]+Max(-a[i][l],0),
G[j−a[i][r]][l][r−1]+Max(−a[i][r],0)}G[j-a[i][r]][l][r-1]+Max(-a[i][r],0)\}
最后:
F[i][j][k]=Max{G[j][l][r]}(1≤l≤k≤r≤5)F[i][j][k]=Max\{G[j][l][r]\}(1\leq l\leq k\leq r\leq5)
则取最大值即可:
ans=Max{F[i][j][k]}ans=Max\{F[i][j][k]\}
这样的时间复杂度为 O(N∗(5∗Max{A[i][j]}∗N))O(N*(5*Max\{A[i][j]\}*N)) 。
Code
#include<cstdio>
#include<cstring>
using namespace std;
const int N=201,M=10001;
int ans,roll;
int a[N][5],b[N][5],f[2][M][5],g[M][5][5];
bool bz[N][5];
inline int read()
{int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w;
}
inline int max(int x,int y)
{return x>y?x:y;
}
int main()
{int n=read(),mx=n*50;for(int i=1;i<=n;i++)for(int j=0;j<5;j++){a[i][j]=read();b[i][j]=max(-a[i][j],0);}int m=read();while(m--){int x=read(),y=read();bz[x][y-1]=true;}memset(f,128,sizeof(f));f[0][4][2]=0;for(int i=1;i<=n;i++){roll^=1;memset(f[roll],128,sizeof(f[roll]));memset(g,128,sizeof(g));for(int j=0;j<=mx;j++)for(int k=0;k<5;k++){int s=j-a[i][k];if(s>=0 && s<=mx) f[roll][j][k]=g[j][k][k]=f[roll^1][s][k]+b[i][k];}for(int k=1;k<5;k++)for(int l=0;l+k<5;l++)for(int j=0;j<=mx;j++){int r=l+k,s=j-a[i][l];if(!bz[i][l] && s>=0 && s<=mx) g[j][l][r]=g[s][l+1][r]+b[i][l];s=j-a[i][r];if(!bz[i][r-1] && s>=0 && s<=mx) g[j][l][r]=max(g[j][l][r],g[s][l][r-1]+b[i][r]);for(int p=l;p<=r;p++) f[roll][j][p]=max(f[roll][j][p],g[j][l][r]);}for(int j=0;j<=mx;j++)for(int k=0;k<5;k++) ans=max(ans,f[roll][j][k]);}printf("%d",ans);return 0;
}
JZOJ 5393. 【NOIP2017提高A组模拟10.5】Snake vs Block相关推荐
- JZOJ 5404. 【NOIP2017提高A组模拟10.10】Graph
Description 给定一张n个点m条边的无向图,每条边连接两个顶点,保证无重边自环,不保证连通 你想在这张图上进行若干次旅游,每次旅游可以任选一个点x作为起点,再走到一个与x 直接有边相连的点y ...
- JZOJ 5401. 【NOIP2017提高A组模拟10.8】Star Way To Heaven
Description Input Output Sample Input 10 5 2 1 1 2 3 Sample Output 1.11803399 Data Constraint Soluti ...
- JZOJ 5400. 【NOIP2017提高A组模拟10.7】Repulsed
Description 小w 心里的火焰就要被熄灭了. 简便起见,假设小w 的内心是一棵n -1 条边,n 个节点的树. 现在你要在每个节点里放一些个灭火器,每个节点可以放任意多个. 接下来每个节点都 ...
- JZOJ 5398. 【NOIP2017提高A组模拟10.7】Adore
Description 小w 偶然间见到了一个DAG. 这个DAG 有m 层,第一层只有一个源点,最后一层只有一个汇点,剩下的每一层都有k 个节点. 现在小w 每次可以取反第i(1 < i &l ...
- JZOJ 5399. 【NOIP2017提高A组模拟10.7】Confess
Description 小w 隐藏的心绪已经难以再隐藏下去了. 小w 有n + 1(保证n 为偶数) 个心绪,每个都包含了[1,2n] 的一个大小为n 的子集. 现在他要找到隐藏的任意两个心绪,使得他 ...
- JZOJ 5396. 【NOIP2017提高A组模拟10.6】Blocks
Description Input Output Sample Input 10 5 1 7 9 9 5 9 3 4 5 8 5 7 20 9 1 Sample Output 10 6 0 2 10 ...
- JZOJ 5397. 【NOIP2017提高A组模拟10.6】Biology
Description Input Output Sample Input 5 5 zzj pri prime ime owaski 2 3 1 3 5 2 2 2 3 1 actri 2 2 3 4 ...
- JZOJ 5392. 【NOIP2017提高A组模拟10.5】Lucky Transformation
Description Input Output Sample Input 7 2 2343223 4 1 2234 Sample Output 2243233 2334 Data Constrain ...
- 【JZOJ 5405】【NOIP2017提高A组模拟10.10】Permutation
Description 你有一个长度为n 的排列P 与一个正整数K 你可以进行如下操作若干次使得排列的字典序尽量小 对于两个满足|i-j|>=K 且|Pi-Pj| = 1 的下标i 与j,交换P ...
最新文章
- 使用css实现背景图片无重复填充
- 软件工程--团队作业4
- zabbix安装使用及监控案例(从头到尾)
- flink更新flink-shaded-hadoop-3-uber
- SAP License:COPA计划
- C# LINQ 对象克隆
- Ubuntu18.04报错:make[1]: *** No rule to make target armv4-mont.o, needed by build-msm8916/lk. Stop.
- python车牌识别库_Python+Keras+TensorFlow车牌识别
- maya中英文对比_maya菜单中英文对照表
- python列表报错TypeError: list indices must be integers or slices, not str
- web前段设计之痛:手机浏览器和pc浏览器的width:100%的自适应问题
- mysql商品库存字段_mysql商品库存扣减问题总结
- 使用Visual Paradigm如何复制表格
- 当技术重构遇上DDD,如何实现业务、技术双赢?
- 如何快速制作一个H5单页面网站
- linux环境搭建篇-redis设置密码
- 不是封闭也不是开放 创新封闭式基金迎来变种
- SaaS-HRM中的认证授权
- Android简易实战教程--第五话《开发一键锁屏应用》
- 2021年起重机司机(限桥式起重机)考试题库及起重机司机(限桥式起重机)模拟考试题