hdu1176 dp
题意:在一条 0 ~ 10 的坐标轴上,在整数点上会掉烙饼,一个人第 0 秒站在坐标 5 处,每秒他能够左右移动一个单位的坐标或不移动,并接住该坐标位置当前时间落下的烙饼,(例如第0秒他在坐标5处,第一秒他能在坐标4或5或6处,并接到该点第一秒落下的饼,同一个点同一秒可以落下多个饼),问最多能够接到多少饼
我的做法是以 dp [ i ] [ j ] 表示在坐标 i 处第 j 秒能接到的饼的最优情况。转移时由上一秒种能够移动到 i 点的最大 dp 值转移过来,并且加上当前能够拿到的最大值(这是我的第一思路,但事实上题目描述并不是这样,他只能捡到他移动到的点当前时间掉落的烙饼,而我以为可以捡到左中右三格上最大的一格,所以orzWA五连发```)。
dp[ i ] [ j ] = max ( dp [ i - 1 ] [ j - 1 ] , dp [ i ] [ j - 1 ] , dp [ i + 1 ] [ j - 1 ] ) + a [ i ] [ j ];当然, i + 1, i - 1 都必须保证在 0 ~ 10 范围内且第 j - 1 秒是能够达到的。
当然,我看其他人的题解其实都是从最后一秒向第 0 秒推,我看完之后也觉得可能比我的做法更加优化,因为这样就不需要考虑那一秒的时候是否能够达到那个点了。
自己还是太弱了,中问题都看不懂了啊!
#include<stdio.h>
#include<string.h>
#define max(a,b) a>b?a:b int a[][],dp[][]; int main(){
int n;
while(scanf("%d",&n)!=EOF&&n!=){
memset(a,,sizeof(a));
memset(dp,-,sizeof(dp));
int i,j,x,t,m=,k,ans=;
for (i=;i<=n;i++){
scanf("%d%d",&x,&t);
a[x][t]++;
if(t>m)m=t;
}
dp[][]=a[][];
ans=max(ans,dp[][]);
/* dp[5][1]=max(a[5][1],a[4][1]);
dp[5][1]=max(dp[5][1],a[6][1]);
ans=dp[5][1];
dp[5][1]=dp[5][0];
dp[5][1]+=a[5][1];
ans=max(dp[5][1],ans);
*/ for(t=;t<=m;t++){
for(i=;i<=;i++){
for(j=i-;j<=i+;j++){
if(<=j&&j<=&&dp[j][t-]>=){
dp[i][t]=max(dp[i][t],dp[j][t-]);
}
}
/* int m0=0;
for(j=i-1;j<=i+1;j++){
if(0<=j&&j<=10){
m0=max(m0,a[j][t]);
}
}
*/ if(dp[i][t]>=){
/* int m0=0;
for(j=i-1;j<=i+1;j++){
if(0<=j&&j<=10){
m0=max(m0,a[j][t]);
}
}*/
dp[i][t]+=a[i][t];
}
// dp[i][t]+=m0;
ans=max(ans,dp[i][t]);
}
}
printf("%d\n",ans);
}
return ;
}
hdu1176 dp的更多相关文章
- DP 免费馅饼 HDU1176
DP 免费馅饼 HDU1176 vjudge题面 一道基本的DP题,状态转移很好想,每一个状态的位置\(pos\)都只能由上一秒的\(pos-1, pos, pos+1\)三个位置转移而来(当然要判断 ...
- HDU1176:免费馅饼(DP)
Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁 ...
- hdu-1176(dp)
解题思路:用dp做的,dp[i][j]表示在i时刻,j点的最大馅饼.a[i][j]表示在i这个时刻j点同时掉落的馅饼: 每个点除了0和10之外,都有三种状态: 1.没有移动,这样值就为dp[i][j] ...
- HDU1176:免费馅饼(dp,数字三角形的应用)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1176 这题就是数字三角行的变形,可惜对于我这个渣渣来说就是没发现,区别是他可以保持在三个点,他左边的点,右 ...
- 「暑期训练」「基础DP」免费馅饼(HDU-1176)
题意与分析 中文题就不讲题意了.我是真的菜,菜出声. 不妨思考一下,限制了我们决策的有哪些因素?一,所在的位置:二,所在的时间.还有吗?没有了,所以设dp[i][j]" role=" ...
- kuangbin专题十二 HDU1176 免费馅饼 (dp)
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- [hdu1176]免费馅饼(数塔dp)
题意:中文题,不解释了 = = 解题关键:逆推,转化为数塔dp就可以了 dp[i][j]表示在i秒j位置的最大值. 转移方程:$dp[i][j] = \max (dp[i + 1][j],dp[i + ...
- HDU1176 免费馅饼 —— DP
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others ...
- HDU1176免费馅饼(DP)
都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内.馅饼如果掉在了地上当然就 ...
随机推荐
- 小行星碰撞 Asteroid Collision
2018-08-07 11:12:01 问题描述: 问题求解: 使用一个链表模拟栈,最后的状态一定是左侧全部是负值,表示的是向左飞行,右侧的全部是正值,表示的是向右飞行. 遍历整个数组,对于每个读到的 ...
- MariaDB 服务器在 MySQL Workbench 备份数据的时候出错如何解决
服务器是运行在 MariaDB 10.2 上面的,在使用 MySQL Workbench 出现错误: mysqldump: Couldn't execute 'SELECT COLUMN_NAME, ...
- mysql导入导出数据过大命令
phpmyadmin 导入或者导出都是有限制的,当导入或者导出的数据会报错. 1.导入数据库 mysql -u root -p<备份文件的保存路径 eg: mysql -u root -p &l ...
- HDU-4471 Yet Another Multiple Problem (BFS+路径还原)
Problem Description There are tons of problems about integer multiples. Despite the fact that the to ...
- pycharm在创建py文件时,自动添加文件头注释
File -> settings -> Editor-> File and Code Templates -> Python Script 添加内容: #!/usr/bin/e ...
- consumer发送请求,接收响应
一般情况,consumer发送请求时,创建一个DefaultFuture对象,然后阻塞并等待响应.DefaultFuture类,封装了请求和响应: // 省略其他代码 public class Def ...
- 桥接、nat、host-only
- kernel build command
Uboot: make ARCH=arm CROSS_COMPILE=${CC} distclean make ARCH=arm CROSS_COMPILE=${CC} am335x_evm_defc ...
- C#阿里云移动推送列表
C#阿里云移动推送列表 这个就在上期随笔的基础之上,加一个 函数就行了. 简单的. 附上源码:一下代码只要把参数改一下就可以了,中间几个参数 可以灵活修改 /// <summary> ...
- zoj2112&&bzoj1901
题解: 可修改的主席树 一开始,我就按照最暴力的方法,空间nlognlogn 然后zju上面过不了,bzoj没有权限号 然后,参考了往上的论文,发现可以把初始的主席树先建好 然后,每次只需要维护修改的 ...