HDU 1176 免费馅饼
来源:互联网 发布:淘宝担保交易怎么弄 编辑:程序博客网 时间:2024/06/05 20:42
递推方程应该很好想,就是初值处理起来有点麻烦。在草稿纸上模拟一下就可以了
dp[i][j]表示i时刻处于j位置能接到的最大值
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int a[100005][15],dp[100005][15];void init(){memset(a,0,sizeof(a));memset(dp,0,sizeof(dp));for(int i=0;i<5;i++){for(int j=0;j<=10;j++) dp[i][j]=-1;}for(int i=0;i<5;i++){for(int j=5-i;j<=5+i;j++){dp[i][j]=0;}}}int main(){#ifndef ONLINE_JUDGEfreopen("in.txt","r",stdin);#endifint n,x,t;while(scanf("%d",&n),n){int maxt=0;init();for(int i=1;i<=n;i++) {scanf("%d%d",&x,&t);maxt=max(maxt,t);a[t][x]++;}for(int i=1;i<=maxt;i++){for(int j=0;j<=10;j++){if(j-1>=0&&dp[i-1][j-1]!=-1) dp[i][j]=max(dp[i][j],dp[i-1][j-1]+a[i][j]);if(dp[i-1][j]!=-1) dp[i][j]=max(dp[i][j],dp[i-1][j]+a[i][j]);if(j+1<=10&&dp[i-1][j+1]!=-1) dp[i][j]=max(dp[i][j],dp[i-1][j+1]+a[i][j]);}}int ans=0;for(int i=0;i<=10;i++) ans=max(ans,dp[maxt][i]);printf("%d\n",ans);}}
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 免费馅饼
- 深入this关键字(静态方法中不能调用非静态成员的解释)
- JAVA学习路线图
- [LeetCode]Maximum Depth of Binary Tree
- 11.用户模块:验证码程序
- 黑马程序员--java基础--抽象类和接口
- HDU 1176 免费馅饼
- CI框架源码完全分析之核心文件(装载器)Loader.php
- 神经网络训练中的Tricks之高效BP(反向传播算法)
- 整数数组的循环左移和右移
- java-集合(6)-TreeSet,HashSet与TreeSet比较,HashMap,TreeMap只有在排序的功能时使用
- Unity 3D
- CI框架源码完全分析之核心文件(超级控制器)Controller.php
- struts2的核心和工作原理
- Android中ProgressBar样式