hdu 1176 免费馅饼(nyist 613)
来源:互联网 发布:大文件复制软件 编辑:程序博客网 时间:2024/06/03 16:33
http://acm.hdu.edu.cn/showproblem.php?pid=1176
dp[i][j]:表示第i秒接j位置的馅饼的最大值。
三种状态:
dp[i][j]=max(dp[i-1][j],dp[i-1][j-1],dp[i-1][j+1])+a[i][j]
分别是上一秒接j位置,上一秒接j-1位置,上一秒接j+1位置。
注意数组初始化。
#include <iostream>#include <cstring>using namespace std;int dp[100005][11],a[100005][11];int main(int argc, char *argv[]){int n,i,j,id,t,maxt,ans;while(cin>>n&&n){memset(a,0,sizeof(a));for(maxt=0,i=1;i<=n;i++){cin>>id>>t;a[t][id]++;if(maxt<t) maxt=t;}for(i=1;i<=maxt;i++)for(j=0;j<=10;j++)dp[i][j]=-1000000005;dp[1][4]=a[1][4]; dp[1][5]=a[1][5]; dp[1][6]=a[1][6];int x1,x2,x3;for(i=2;i<=maxt;i++)for(j=0;j<=10;j++){x1=dp[i-1][j]+a[i][j];if(j-1>=0) x2=dp[i-1][j-1]+a[i][j]; else x2=-1000000005;if(j+1<=10) x3=dp[i-1][j+1]+a[i][j]; else x3=-1000000005;if(x1<x2) x1=x2;if(x1<x3) x1=x3;dp[i][j]=x1;//cout<<i<<" -> "<<j<<" "<<dp[i][j]<<endl;}for(ans=i=0;i<=10;i++){if(dp[maxt][i]>ans) ans=dp[maxt][i];}cout<<ans<<endl;}return 0;}
- hdu 1176 免费馅饼(nyist 613)
- hdu 1176 免费馅饼(nyist 613)
- nyist 613 免费馅饼
- nyist 613 免费馅饼 逆推dp
- 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 免费馅饼
- 【二叉树4】比较两个二叉树的结构是否相同
- iOS extracts: importing a header file
- 常用util工具类——获取网络连接状态
- C++11新特性:Lambda函数(匿名函数)
- 又来了一个IP-Guard
- hdu 1176 免费馅饼(nyist 613)
- HDU 1811 Rank of Tetris 并查集+拓补排序(好题)
- const 指针与指向const的指针
- 整数划分解报告(背包求解)
- linux 顶级ntp服务器配置
- SGU 186
- 各种指针的定义
- Linux 常用命令
- vss,rss,pss,uss