hdu-1176(dp)
2024-08-22 21:35:17
解题思路:用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;
}
最新文章
- Atitit &#160;数据库的事件机制--触发器与定时任务attilax总结
- hdu 1241 Oil Deposits (一次dfs搞定有某有)
- php验证登录
- Java开发中经典的小实例-(字符串倒序输出)
- R语言putty中直接使用X11(Xming)绘图
- Js_字符串操作
- The Services(服务)
- 经典代码-C宏 #转字符串【瓦特芯 笔记】
- Ubuntu 14.04下java开发环境的搭建--2--Eclipse的安装
- Orchard helloworld
- UIApplication 常用方法
- android 51 有序广播
- hdu 4632区间 dp
- rm: cannot remove `/home/cn0000/log/formlog.20140417&#39;: Read-only file system
- php的stdClass类
- spring mvc 提交表单的例子
- 在React+Babel+Webpack环境中使用ESLint
- iOS 引导页
- linux 3.10 缺页异常(TLB_invalid)通用处理框架
- layout文件夹中activity_main.xml与fragment_main.xml文件的处理记录
热门文章
- 常用的一些markdown格式
- sklearn 数据预处理1: StandardScaler
- apt查找安装包
- hibernate(*.hbm.xml)中新添加的字段被标记为红色(找不到)的解决方法
- 2019年第一天——使用Visual Studio 2019 Preview创建第一个ASP.Net Core3.0的App
- 朱晔和你聊Spring系列S1E9:聊聊Spring的那些注解
- (转)C#中的那些全局异常捕获
- 解决win7 win10上网卡慢问题
- c#中用sql存储过程
- NSAssert和NSParameterAssert