51nod1455 宝石猎人【dp---状态转移】
苏塞克岛是一个有着30001个小岛的群岛,这些小岛沿着一条直线均匀间隔分布,从西到东编号为0到30000。众所周知,这些岛上有很多宝石,在苏塞克岛上总共有n颗宝石,并且第i颗宝石位于岛 pi上。
小法正好到达0号小岛上,他拥有卓越的跳跃能力,能根据以下规则在小岛之间向东重复跳跃:
· 首先,他会从0号岛跳到d号岛
· 此后,他会根据以下规则继续跳跃,L是上一次跳跃的长度,即,如果他上一次跳跃是从岛prev岛cur,L= cur-prev。他可以向东做一次长度为L-1,L或L+1的跳跃。即,他将会跳到岛 (cur + L - 1), (cur + L) 或 (cur + L + 1)(如果这些岛存在)。一次跳跃的长度必须是正数,即,当L=1时,他不能做一次长度为0的跳跃,如果没有有效的目的地,他将会停止跳跃。
小法将会在跳跃的过程中收集到过的岛上的宝石。我们要找到小法能收集的宝石的最大数。
输入的第一行是两个以空格隔开的整数n和d (1 ≤ n, d ≤ 30000),分别表示苏塞克岛上的宝石数量和小法第一次跳跃的长度。 接下来n行表示这些宝石的位置,第i行(1 ≤ i ≤ n)包含一个整pi(d ≤ p1 ≤ p2 ≤ ... ≤ pn ≤ 30000),表示包含第i颗宝石的小岛的编号。
输出小法能收集的宝石的最大数
4 10 10 21 27 27
3
思路:
dp 但是又不能爆内存和时间--
d每次只能+1,-1或不变--所以d最小也是d-200多,最大也是d+200多---
所以用300来表示初始d
用dp[30010][600]就可以了
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int p[30100];
int dp[30010][600];
int main()
{int n,d,a,kk,da=0;memset(p,0,sizeof(p));scanf("%d%d",&n,&d);while (n--){scanf("%d",&a);p[a]++;}memset(dp,-1,sizeof(dp));dp[d][300]=p[d];da=p[d];for (int i=d+1;i<=30000;i++){for (int j=1;j<=590;j++){kk=j+d-300;if (kk>0&&kk<=i){if (dp[i-kk][j]!=-1)dp[i][j]=max(dp[i][j],dp[i-kk][j]+p[i]);if (dp[i-kk][j-1]!=-1)dp[i][j]=max(dp[i][j],dp[i-kk][j-1]+p[i]);if (dp[i-kk][j+1]!=-1)dp[i][j]=max(dp[i][j],dp[i-kk][j+1]+p[i]);}if (da<dp[i][j])da=max(da,dp[i][j]);}}printf("%d\n",da);return 0;
}
51nod1455 宝石猎人【dp---状态转移】相关推荐
- [51nod1455]宝石猎人——DP
1455 宝石猎人 题目来源: CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 苏塞克岛是一个有着30001个小岛的群岛,这些小岛 ...
- 51nod1455 宝石猎人
51nod 宝石猎人 2.0 2.0 2.0 秒/ 131 , 072.0 131,072.0 131,072.0 KB/ 40 40 40 分 / 4 4 4级题 食物(题目) 苏塞克岛是一个有着 ...
- 51nod 1455 宝石猎人(dp or 记忆化搜索)
苏塞克岛是一个有着30001个小岛的群岛,这些小岛沿着一条直线均匀间隔分布,从西到东编号为0到30000.众所周知,这些岛上有很多宝石,在苏塞克岛上总共有n颗宝石,并且第i颗宝石位于岛 pi上. 小法 ...
- Going Dutch BAPC( 状态转移DP)
题目描述 You and your friends have just returned from a beautiful vacation in the mountains of the Nethe ...
- Codeforces Round 63 (Rated for Div. 2) F. Delivery Oligopoly dp+图论状态转移
题目链接: https://codeforces.com/contest/1155/problem/F 题意: 现在给你一个 141414 个点的无向边双联通图,现在要你删掉一些边,使得留下来的边最少 ...
- c语言dp状态转移方程,[总结-动态规划]经典DP状态设定和转移方程
马上区域赛,发现DP太弱,赶紧复习补上. #普通DP CodeForces-546D Soldier and Number Game 筛法+动态规划 待补 UVALive-8078 Bracket S ...
- 2019ICPC(沈阳) - Fish eating fruit(树形dp+树根转移)
题目链接:点击查看 题目大意:给出一棵树,给出分类规则:设两点之间的距离为w,则按照w对3取模后的余数分为三组(0,1,2),问两两顶点之间的距离分类后之和为多少,答案输出模分别为0,1,2时的距离和 ...
- CodeForces - 1092F Tree with Maximum Cost(树形dp+树根转移)
题目链接:点击查看 题目大意:给出一个树,每个顶点都有一个权值,任意一点到其他点的距离为经过边的数量,求出一点到其他每一个点的距离*权值之和最大 题目分析:树形dp,一开始怎么也想不明白,看了别人的代 ...
- 51nod 1455 宝石猎人(记忆化搜索)
1455 宝石猎人 题目来源: CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 苏塞克岛是一个有着30001个小岛的群岛, ...
最新文章
- 【组队学习】【28期】青少年编程(Scratch 一级)
- 逆袭!BCH交易超越BTC
- 查看was中项目类的加载顺序
- 块设备驱动之NAND FLASH驱动程序
- JAVA 排序工具类
- web开发程序员有几种_每个程序员都应该知道的10种流行的Web开发工具
- redis持久化之rdb
- MySQL锁系列3 MDL锁
- 密码库LibTomCrypt学习记录——(2.2)分组密码算法的工作模式——ECB模式
- mysql通过Navcat 备份数据.psc 还原数据时 只有表没有数据解决方法
- C语言单元作业的答案,C语言习题全集+答案.doc
- C# 的1ms延时函数
- 文件变成chk如何恢复正常
- uniapp弹窗滚动阻止外部滚动
- 【论文笔记】Multi-Interactive Attention Network for Fine-grained Feature Learning in CTR Prediction
- Weston 窗口管理(2)
- NVIDIA Jetson tx2 cuda和cudnn安装_刷机失败,手动离线安装
- 越野越激情——“中国东川泥石流国际汽车越野赛”
- 信任,问责制以及时间在哪里?
- 深度学习和计算机视觉相关总结