解题思路:用dp做的,dp[i][j]表示在i时刻,j点的最大馅饼。a[i][j]表示在i这个时刻j点同时掉落的馅饼;

每个点除了0和10之外,都有三种状态;

1、没有移动,这样值就为dp[i][j]=max(dp[i][j],dp[i-1][j]+a[i][j]);

2、从左边移动来的,dp[i][j]=max(dp[i][j],dp[i-1][j-1]+a[i][j]);

3、从右边移动来的,dp[i][j]=max(dp[i][j],dp[i-1][j+1]+a[i][j]);

初始化dp[i][j]=-1;dp[0][5]=0;本身在5这个点;

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define maxn 100005
using namespace std;
int dp[maxn][12];
int a[maxn][12];
int n;
int main()
{
int x,t;
while(scanf("%d",&n)!=EOF)
{
if(n==0)
return 0;
memset(dp,-1,sizeof(dp));
memset(a,0,sizeof(a));
while(n--)
{
scanf("%d%d",&x,&t);
a[t][x]++;
}
int ans=-888;
dp[0][5]=0;
for(int i=1;i<=100000;i++)//时间;
{
for(int j=0;j<=10;j++)//地点;
{
if(dp[i-1][j]!=-1)
dp[i][j]=max(dp[i][j],dp[i-1][j]+a[i][j]);
if(j!=0&&dp[i-1][j-1]!=-1)
dp[i][j]=max(dp[i][j],dp[i-1][j-1]+a[i][j]);
if(j!=10&&dp[i-1][j+1]!=-1)
dp[i][j]=max(dp[i][j],dp[i-1][j+1]+a[i][j]);
ans=max(ans,dp[i][j]);
}
}
printf("%d\n",ans);
}
return 0;
}

  

最新文章

  1. Atitit &#160;数据库的事件机制--触发器与定时任务attilax总结
  2. hdu 1241 Oil Deposits (一次dfs搞定有某有)
  3. php验证登录
  4. Java开发中经典的小实例-(字符串倒序输出)
  5. R语言putty中直接使用X11(Xming)绘图
  6. Js_字符串操作
  7. The Services(服务)
  8. 经典代码-C宏 #转字符串【瓦特芯 笔记】
  9. Ubuntu 14.04下java开发环境的搭建--2--Eclipse的安装
  10. Orchard helloworld
  11. UIApplication 常用方法
  12. android 51 有序广播
  13. hdu 4632区间 dp
  14. rm: cannot remove `/home/cn0000/log/formlog.20140417&#39;: Read-only file system
  15. php的stdClass类
  16. spring mvc 提交表单的例子
  17. 在React+Babel+Webpack环境中使用ESLint
  18. iOS 引导页
  19. linux 3.10 缺页异常(TLB_invalid)通用处理框架
  20. layout文件夹中activity_main.xml与fragment_main.xml文件的处理记录

热门文章

  1. 常用的一些markdown格式
  2. sklearn 数据预处理1: StandardScaler
  3. apt查找安装包
  4. hibernate(*.hbm.xml)中新添加的字段被标记为红色(找不到)的解决方法
  5. 2019年第一天——使用Visual Studio 2019 Preview创建第一个ASP.Net Core3.0的App
  6. 朱晔和你聊Spring系列S1E9:聊聊Spring的那些注解
  7. (转)C#中的那些全局异常捕获
  8. 解决win7 win10上网卡慢问题
  9. c#中用sql存储过程
  10. NSAssert和NSParameterAssert