题目描述:
鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的。根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个nn的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气。
你可以控制一个机器人来打鼹鼠,如果i时刻鼹鼠在某个网格中出现,而机器人也处于同一网格的话,那么这个鼹鼠就会被机器人打死。而机器人每一时刻只能够移动一格或停留在原地不动。
机器人的移动是指从当前所处的网格移向相邻的网格,即从坐标为(i,j)的网格移向(i-1, j),(i+1, j),(i,j-1),(i,j+1)四个网格,机器人不能走出整个n
n的网格。游戏开始时,你可以自由选定机器人的初始位置。
现在你知道在一段时间内,鼹鼠出现的时间和地点,希望你编写一个程序使机器人在这一段时间内打死尽可能多的鼹鼠。

思路:要求被打死鼹鼠的最大数目,即尽可能多的去打死鼹鼠。那么一开始我们出现的位置肯定出现在第一只鼹鼠出现的位置。

然后随后出现的鼹鼠,我们要考虑当前机器人的位置跟下一只鼹鼠出现位置 之间的距离可用时间的关系。

如果可用时间多的话,说明我们可以到那个位置去打死一只鼹鼠。那么我们可以轻易得出状态转移方程为dp[i] = max(dp[i] , dp[j] + 1 )

代码如下:

#include<bits/stdc++.h>
#define N 10011
#define inf 0x3f3f3f3f
using namespace std;struct node{int t;int x;int y;
}a[N];int dp[N];int main(){int n,m;cin>>n>>m;for(int i=1;i<=m;i++){dp[i] = 1;cin>>a[i].t>>a[i].x>>a[i].y;}int ans = -inf;for(int i=2;i<=m;i++){for(int j=1;j<=i-1;j++){if(a[i].t-a[j].t >= abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y))dp[i] = max(dp[i],dp[j]+1);ans = max(ans,dp[i]);}}cout<<ans<<endl;return 0;
}

[HNOI2004]打鼹鼠 简单DP相关推荐

  1. P2285 [HNOI2004]打鼹鼠

    P2285 [HNOI2004]打鼹鼠 题目描述 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿牛编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某 ...

  2. Codeforces 41D Pawn 简单dp

    题目链接:点击打开链接 给定n*m 的矩阵 常数k 以下一个n*m的矩阵,每一个位置由 0-9的一个整数表示 问: 从最后一行開始向上走到第一行使得路径上的和 % (k+1) == 0 每一个格子仅仅 ...

  3. hdu2067 简单dp或者记忆化搜索

    题意: 小兔的棋盘 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  4. POJ1088:滑雪(简单dp)

    题目链接:  http://poj.org/problem?id=1088 题目要求: 一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小.求可以滑落的最长长度. 题目解析: 首先要先排一 ...

  5. 第三讲 数学与简单DP【完结】

    目录 1205. 买不到的数目 [数学结论题] 1211. 蚂蚁感冒 [模拟 / 推理] 1216. 饮料换购 [简单 / 模拟] 2. 01背包问题 [板子题] 1015. 摘花生 [简单DP] 8 ...

  6. hdu 2881(简单dp)

     题意:n*n的矩阵,里面有m个格子是有任务要去完成的,t,x,y表示要在第t秒到达(x,y)的格子完成任务,问你最多可以完成多少 解题思路:简单dp,将时间排个序后就是LIS #include< ...

  7. P1005 矩阵取数游戏(__int128模板/简单dp)

    转跳P1005 题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的 n \times mn×m 的矩阵,矩阵中的每个元素 a_{i,j}a i,j ​ 均为非负整数.游戏规则如下: 每次取数时 ...

  8. 最少拦截系统,简单dp,(学长说这是贪心?!。。。。。。也是醉了)

     description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天, ...

  9. HDU 1158【简单dp】

    题意:给你一个项目,需要几个月来完成买,同时也给你每个月最少需要的工人数.并且告诉你hiring,firing每个工人的钱数,以及每个月应付每个工人的工资.求项目完成时最小花费. 这是个简单dp,思路 ...

最新文章

  1. 基于opencv实战眼睛控制鼠标
  2. Windows内核实验004 API调用
  3. Divine Array 思维,模拟,结论
  4. 搭建iscsi存储系统
  5. Android属性动画 XML
  6. 五个使Java变得更好的功能
  7. 对《生产流水线模式》讨论的总结性回复
  8. php js offset,获取元素的偏移量offset实例详解
  9. vue mint-ui 三级地址联动
  10. #54 partition a sequence
  11. pythonstdin和stdout_如何使用os.execv()在python中继承stdin和stdout
  12. mysql 查看表格scott_在mysql中创建 oracle scott 用户的四个表及插入初始化数据
  13. php会不会被人工智能取代,人工智能真的会取代前端开发吗?
  14. 查看redis数据_关于 Redis 的一些新特性、使用建议和最佳实践
  15. 遗传算法matlab_通俗易懂地解释遗传算法
  16. VS2008连接TFS 2010
  17. linux下texlive的卸载,linux下安装TexLive
  18. 解决Ubuntu与Windows不能复制粘贴问题
  19. ffmpeg4.x支持的编解码器等相关信息一览表
  20. 什么是配置管理?配置管理由专人负责吗?

热门文章

  1. linuxprobe第二弹
  2. 数字图像学笔记——3.彩色转黑白
  3. TMS570学习【2】pwm输出
  4. golang字符串拼接方式
  5. 神经网络 深度神经网络,边缘计算 神经网络
  6. c++ 多线程 “锁”
  7. axios获取html页面,axios 获取后台数据
  8. 数据库概论——物理独立性和逻辑独立性
  9. linux下mysql可视化工具安装
  10. 亚马逊查询关键词排名的工具_拼多多关键词排名查询工具怎么查关键词的?