1455 宝石猎人
题目来源:  CodeForces
基准时间限制:2 秒 空间限制:131072 KB 分值: 40  难度:4级算法题

 收藏
 关注

苏塞克岛是一个有着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的跳跃,如果没有有效的目的地,他将会停止跳跃。

小法将会在跳跃的过程中收集到过的岛上的宝石。我们要找到小法能收集的宝石的最大数。

样例解释:在第一个样例中,最优路径是0  →  10 (+1宝石)  →  19  →  27 (+2宝石)  →...
Input
输入的第一行是两个以空格隔开的整数n和d (1 ≤ n, d ≤ 30000),分别表示苏塞克岛上的宝石数量和小法第一次跳跃的长度。
接下来n行表示这些宝石的位置,第i行(1 ≤ i ≤ n)包含一个整pi(d ≤ p1 ≤ p2 ≤
... ≤ pn ≤ 30000),表示包含第i颗宝石的小岛的编号。
Output
输出小法能收集的宝石的最大数
Input示例
4 10
10
21
27
27
Output示例
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---状态转移】相关推荐

  1. [51nod1455]宝石猎人——DP

    1455 宝石猎人 题目来源: CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 苏塞克岛是一个有着30001个小岛的群岛,这些小岛 ...

  2. 51nod1455 宝石猎人

    51nod 宝石猎人 2.0 2.0 2.0 秒/ 131 , 072.0 131,072.0 131,072.0 KB/ 40 40 40 分 / 4 4 4级题 食物(题目) 苏塞克岛是一个有着 ...

  3. 51nod 1455 宝石猎人(dp or 记忆化搜索)

    苏塞克岛是一个有着30001个小岛的群岛,这些小岛沿着一条直线均匀间隔分布,从西到东编号为0到30000.众所周知,这些岛上有很多宝石,在苏塞克岛上总共有n颗宝石,并且第i颗宝石位于岛 pi上. 小法 ...

  4. Going Dutch BAPC( 状态转移DP)

    题目描述 You and your friends have just returned from a beautiful vacation in the mountains of the Nethe ...

  5. Codeforces Round 63 (Rated for Div. 2) F. Delivery Oligopoly dp+图论状态转移

    题目链接: https://codeforces.com/contest/1155/problem/F 题意: 现在给你一个 141414 个点的无向边双联通图,现在要你删掉一些边,使得留下来的边最少 ...

  6. c语言dp状态转移方程,[总结-动态规划]经典DP状态设定和转移方程

    马上区域赛,发现DP太弱,赶紧复习补上. #普通DP CodeForces-546D Soldier and Number Game 筛法+动态规划 待补 UVALive-8078 Bracket S ...

  7. 2019ICPC(沈阳) - Fish eating fruit(树形dp+树根转移)

    题目链接:点击查看 题目大意:给出一棵树,给出分类规则:设两点之间的距离为w,则按照w对3取模后的余数分为三组(0,1,2),问两两顶点之间的距离分类后之和为多少,答案输出模分别为0,1,2时的距离和 ...

  8. CodeForces - 1092F Tree with Maximum Cost(树形dp+树根转移)

    题目链接:点击查看 题目大意:给出一个树,每个顶点都有一个权值,任意一点到其他点的距离为经过边的数量,求出一点到其他每一个点的距离*权值之和最大 题目分析:树形dp,一开始怎么也想不明白,看了别人的代 ...

  9. 51nod 1455 宝石猎人(记忆化搜索)

    1455 宝石猎人 题目来源:  CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 40  难度:4级算法题  收藏  关注 苏塞克岛是一个有着30001个小岛的群岛, ...

最新文章

  1. 【组队学习】【28期】青少年编程(Scratch 一级)
  2. 逆袭!BCH交易超越BTC
  3. 查看was中项目类的加载顺序
  4. 块设备驱动之NAND FLASH驱动程序
  5. JAVA 排序工具类
  6. web开发程序员有几种_每个程序员都应该知道的10种流行的Web开发工具
  7. redis持久化之rdb
  8. MySQL锁系列3 MDL锁
  9. 密码库LibTomCrypt学习记录——(2.2)分组密码算法的工作模式——ECB模式
  10. mysql通过Navcat 备份数据.psc 还原数据时 只有表没有数据解决方法
  11. C语言单元作业的答案,C语言习题全集+答案.doc
  12. C# 的1ms延时函数
  13. 文件变成chk如何恢复正常
  14. uniapp弹窗滚动阻止外部滚动
  15. 【论文笔记】Multi-Interactive Attention Network for Fine-grained Feature Learning in CTR Prediction
  16. Weston 窗口管理(2)
  17. NVIDIA Jetson tx2 cuda和cudnn安装_刷机失败,手动离线安装
  18. 越野越激情——“中国东川泥石流国际汽车越野赛”
  19. 信任,问责制以及时间在哪里?
  20. 深度学习和计算机视觉相关总结

热门文章

  1. 微信私域流量池运营:提升客户终生价值(LTV)之激励老客户重复购买!
  2. 一行python代码画粑粑_有趣的一行Python代码
  3. Day8 - 集合和字符串
  4. last 命令 – 显示用户历史登录情况
  5. 【COCO】COCO2017数据集下载百度云
  6. Audition学习记录
  7. 未封装的扩展程序是什么意思_伊能静双11买900件商品,张萌发文去年快递未收到什么意思?...
  8. 微信区王者荣耀领取钥匙方法
  9. 【调剂】山西农业大学2020年硕士研究生调剂公告(第一批)
  10. python-subprocess模块