hdu 1176
来源:互联网 发布:数据立方体 编辑:程序博客网 时间:2024/06/06 07:20
参考博客:
http://blog.csdn.net/my_stage/article/details/77113132
http://www.cnblogs.com/wally/archive/2013/03/11/2954469.html
动态规划
状态转移方程:
有三种状态,可以保持不动 ,也可以在下一秒时间走一步:向左,向右,特殊的 如果走到两端,则减少了一种情况。
由于申请的数组大。 走到最右端,再走,默认值是0, 所以可以一并处理。但是走到最左端,如果再向左走,下标变成-1 ,会出界。
状态转移方程: dp[x][t] 表示t时间在x位置
if(x==0) dp[x][t]+=max(dp[x+1][t+1],dp[x][t+1])else if(x==10) dp[x][t]+=max(dp[x-1][t+1],dp[x][t+1])else dp[x][t]+=max(max(dp[x-1][t+1],dp[x+1][t+1]),dp[x][t+1]))
特别的可以把下x==10的情况和最后的情况归结在一起,因为默认把dp[11][t+1] 设为0.
ac代码
#include <iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;const int maxn=100005;int dp[12][maxn];int main(){ int x,t; int n; int mxt; //max time; while(scanf("%d",&n)!=EOF){ if(n==0) break; mxt=0; memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++){ scanf("%d%d",&x,&t); dp[x][t]++; if(t>mxt)mxt=t; } //dp for(int i=mxt;i>=0;i--){ for(int j=0;j<11;j++){ if(j==0){ dp[j][i]+=max(dp[j+1][i+1],dp[j][i+1]); }else{ dp[j][i]+=max(max(dp[j-1][i+1],dp[j+1][i+1]),dp[j][i+1]); } } } printf("%d\n",dp[5][0]); } return 0;}
阅读全文
0 0
- hdu 1176
- hdu 1176
- hdu 1176
- HDU 1176 !
- hdu 1176
- HDU 1176
- hdu 1176
- hdu 1176
- hdu 1176
- hdu 1176
- HDU 1176
- hdu 1176
- hdu 1176
- hdu 1176
- hdu-1176
- HDU 1176
- hdu 1176
- HDU 1176
- C# DataGridView添加右键菜单等技巧
- java自定义注解简单使用
- Swift 自定义视图:简单的数量选择控件
- Eclipse – How to attach JDK source code
- Oracle数据库查询语句以及简单函数(含例子)
- hdu 1176
- python中的列表学习(跟数组对比)
- hadoop初识之九:Yarn组织架构,对资源的管理,以及以yarn为核心的生态系统
- Win7下安装配置PHP+Apache+Mysql+PHPMyAdmin环境教程(非集成)
- 玩具谜题(NOIP2016)
- 2017.8.16每天五个编程题(九)
- php 配合session + javascrip + Ajax 实现文件上传的进度条
- unity02
- 移动H5页面开发时候,iPhone苹果iOS点击click、touch会有300ms延迟,如何解决?