JZOJ5393【NOIP2017提高A组模拟10.5】Snake vs Block DP
来源:互联网 发布:祛痘产品淘宝 编辑:程序博客网 时间:2024/06/16 01:39
题意没法长话短说。
明显DP。。一开始想的设f[i][j][k]表示前i行,第j列,生命值为k。
然后发现在一行内的转移不太容易搞,然后开始调,就是没想过多加一个DP式子,对着暴力xjb调了半天,能过小数据就不理了。结果WA60。。。迷。
正解是设f[i][j][k]表示前i行,生命值为j,k为列,然后设g[i][l][r]表示生命值为i,在第l,r列之间移动。
那转移就非常好写了= =
同理有:
最后
越来越感觉到自己的煞笔。
#include<cstdio>#include<algorithm>#include<cstring>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;const int N=205;int n,m,k;int f[N][10005][6],g[10005][6][6];int a[N][5],ans,bz[N][5];inline void up(int &x,int y){ if (x<y)x=y;}int main(){ //freopen("snakevsblock.in","r",stdin); //freopen("snakevsblock.out","w",stdout); scanf("%d",&n); fo(i,1,n) { fo(j,1,5) { scanf("%d",&a[i][j]); } } scanf("%d",&m); fo(i,1,m) { int x,y; scanf("%d%d",&x,&y); bz[x][y-1]=1; } ans=0; memset(f,0x80,sizeof(f)); f[0][4][2]=0; int mx=n*50; fo(i,1,n) { memset(g,0x80,sizeof(g)); fo(j,0,mx) fo(k,1,5) if (j-a[i][k]>=0&&j-a[i][k]<=mx) { int tmp=max(0,-a[i][k]); f[i][j][k]=g[j][k][k]=f[i-1][j-a[i][k]][k]+tmp; } fo(l,1,4) for(int j=1,k=j+l;k<=5;j++,k++) { fo(v,0,mx) { int val=v-a[i][j],tmp=max(-a[i][j],0); if (!bz[i][j]&&val>=0&&val<=mx) g[v][j][k]=g[val][j+1][k]+tmp; val=v-a[i][k],tmp=max(-a[i][k],0); if (!bz[i][k-1]&&val>=0&&val<=mx) up(g[v][j][k],g[val][j][k-1]+tmp); fo(x,j,k)up(f[i][v][x],g[v][j][k]); } } } fo(i,0,n) fo(j,0,mx) fo(k,1,5)ans=max(ans,f[i][j][k]); printf("%d\n",ans);}
阅读全文
0 0
- JZOJ5393【NOIP2017提高A组模拟10.5】Snake vs Block DP
- 【NOIP2017提高A组模拟10.5】Snake vs Block
- JZOJ 5393. 【NOIP2017提高A组模拟10.5】Snake vs Block
- 【JZOJ 5393】【NOIP2017提高A组模拟10.5】Snake vs Block
- 【NOIP2017提高A组模拟10.5】Ping
- 【NOIP2017提高A组模拟10.5】Ping
- 【NOIP2017提高A组模拟10.5】Ping
- JZOJ5377. 【NOIP2017提高A组模拟9.19】开拓 DP
- jzoj5394 【NOIP2017提高A组模拟10.5】Ping
- JZOJ 5392. 【NOIP2017提高A组模拟10.5】Lucky Transformation
- 【JZOJ 5394】【NOIP2017提高A组模拟10.5】Ping
- [JZOJ5394]【NOIP2017提高A组模拟10.5】Ping
- jzoj5336 【NOIP2017提高A组模拟8.24】提米树 (dfs序dp,奇异姿势dp)
- A【NOIP2017提高组模拟12.18】
- 【JZOJ4928】【NOIP2017提高组模拟12.18】A
- 【NOIP2017提高组模拟12.18】A
- 【JZOJ4928】【NOIP2017提高组模拟12.18】A
- 【NOIP2017提高A组模拟7.7】图
- 15算法课程 53. Maximum Subarray
- position跟display、margin collapse、overflow、float这些特性相互叠加后会怎么样?
- JS的Dom和事件处理机制(三)
- 试题18:树的子结构
- 粒子滤波
- JZOJ5393【NOIP2017提高A组模拟10.5】Snake vs Block DP
- <C++>15.this指针
- HDU 3555(数位dp)
- 显式Intent
- java面向对象
- VMware安装CentOS 图文教程
- 无序数组求相邻元素最大差值(tiger基金的笔试题)
- 编程的基础
- 华为研发机考笔试题-汽水瓶