HDU1176 免费馅饼
来源:互联网 发布:微信share js sdk 编辑:程序博客网 时间:2024/06/05 14:43
题目分析
用f[i][j]表示第i秒在j位置可以共计接到的馅饼数。然后就很容易得到状态转移方程f[i][j]=max(f[i-1][j-1],f[i-1][j],f[i-1][j+1])+s[i][j]; s[i][j]表示i秒在j位置可以接到的馅饼数(没有共计两个字)。注意几点:
1.某时间某位置可能不只掉一个馅饼。
2.第1秒只有4,5,6三个位置可能接到馅饼
然后随便搞搞就A了。
代码
#include<iostream>#include<cstdio>#include<climits>#include<algorithm>#include<cstring>#include<queue>using namespace std;int read(){ int q=0;char ch=' '; while(ch<'0'||ch>'9')ch=getchar(); while(ch>='0'&&ch<='9')q=q*10+ch-'0',ch=getchar(); return q;}int w,h,n;int f[100001][12];int main(){ int i,j,T,x,t,cnt=0,ans; while(1){ n=read();if(!n)break; T=0;memset(f,0,sizeof(f)); for(i=1;i<=n;i++){ x=read(),t=read(); T=max(t,T);f[t][x]++; } for(i=0;i<=3;i++)f[1][i]=0;for(i=7;i<=10;i++)f[1][i]=0; //注意第1秒只有4,5,6三个位置可以接馅饼 for(i=1;i<=T;i++) for(j=0;j<=10;j++){ ans=0; if(j!=0)ans=max(ans,f[i-1][j-1]+f[i][j]); if(j!=10)ans=max(ans,f[i-1][j+1]+f[i][j]); ans=max(ans,f[i-1][j]+f[i][j]); f[i][j]=ans; } ans=0;for(i=0;i<=10;i++)ans=max(ans,f[T][i]); printf("%d\n",ans); } return 0;}
阅读全文
0 0
- HDU1176免费馅饼
- HDU1176 免费馅饼
- hdu1176免费馅饼
- HDU1176 免费馅饼
- hdu1176免费馅饼
- hdu1176 免费馅饼
- HDU1176--免费馅饼
- hdu1176-免费馅饼
- hdu1176 免费馅饼
- HDU1176 免费馅饼
- hdu1176 免费馅饼
- hdu1176 免费馅饼
- hdu1176免费馅饼 dp
- HDU1176:免费馅饼(DP)
- HDU1176 免费馅饼
- hdu1176---免费馅饼
- HDU1176免费馅饼
- hdu1176免费馅饼(DP)
- Kafka使用SASL_PLAINTEXT实现简易的用户认证及权限
- java,jsp,javascript,获得路径
- 1171 潜伏者
- Java实现基于邻接表的图的深度和广度遍历
- linux下rar包的解压方法
- HDU1176 免费馅饼
- tf.clip_by_value的用法
- 3D圆柱图形的制作
- web服务刚启动时SpringMVC注解就加载一定的数据库数据进入内存中
- 删除 windos服务 elasticsearch 新增windos服务 ES
- g723编解码之自我总结
- java中的==和equals()以及instanceof
- Android 如何使用GPU硬件加速
- O