Description

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

Input

  第一行为n(n<=1000), m(m<=10000),其中m表示在这一段时间内出现的鼹鼠的个数,接下来的m行每行有三个数据time,x,y表示有一只鼹鼠在游戏开始后time个时刻,在第x行第y个网格里出现了一只鼹鼠。Time按递增的顺序给出。注意同一时刻可能出现多只鼹鼠,但同一时刻同一地点只可能出现一只鼹鼠。

Output

  仅包含一个正整数,表示被打死鼹鼠的最大数目

Sample Input

2 2
1 1 1
2 2 2

Sample Output

1

HINT

Source

Solution

  用类似LIS的解法,f[i]表示如果要打死第i个地鼠,那么一共最多打死了多少老鼠。

  O(n^2)水过。好像有O(nlogn)的方法但并不会。

 #include <bits/stdc++.h>
using namespace std;
int t[], x[], y[], f[]; int dis(int i, int j)
{
return abs(x[i] - x[j]) + abs(y[i] - y[j]);
} int main()
{
int n, m;
cin >> n >> m;
for(int i = ; i <= m; i++)
cin >> t[i] >> x[i] >> y[i];
for(int i = ; i <= m; i++)
{
f[i] = ;
for(int j = ; j < i; j++)
if(dis(i, j) <= abs(t[i] - t[j]))
f[i] = max(f[i], f[j] + );
}
cout << *max_element(f + , f + m + ) << endl;
return ;
}

[BZOJ1207] [HNOI2004] 打鼹鼠 (dp)的更多相关文章

  1. [bzoj1207][HNOI2004]打鼹鼠_动态规划

    打鼹鼠 bzoj-1207 HNOI-2004 题目大意:题目链接. 注释:略. 想法: $dp_i$表示打到了第$i$个鼹鼠时最多打了多少个鼹鼠. $O(n)$转移即可. 总时间复杂度$O(n^2) ...

  2. BZOJ 1207: [HNOI2004]打鼹鼠( dp )

    dp.. dp[ i ] = max( dp[ j ] + 1 ) ------------------------------------------------------------------ ...

  3. bzoj千题计划147:bzoj1207: [HNOI2004]打鼹鼠

    http://www.lydsy.com/JudgeOnline/problem.php?id=1207 dp[i] 表示打的最后一只鼹鼠是第i只,最多能打多少只鼹鼠 输出max(dp[i]) 错解: ...

  4. BZOJ1207 [HNOI2004]打鼹鼠

    Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢 把头探出到地面上来透透气的.根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格 ...

  5. BZOJ1207 [HNOI2004]打鼹鼠 动态规划

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1207 题目概括 n*n的方阵上,一开始你可以在任何地方. 你每秒可以移动一格,接下来有m只地鼠冒出 ...

  6. 【题解】 bzoj1207: [HNOI2004]打鼹鼠 (动态规划)

    bzoj1207,懒得复制,戳我戳我 Solution: 挺傻逼的一个\(dp\),直接推就好了 这题在bzoj上的数据有点问题,题目保证每个时间点不会出现在同一位置两个地鼠,然而他有= =(还浪费我 ...

  7. 【动态规划】【最短路】【spfa】bzoj1207 [HNOI2004]打鼹鼠

    <法一>若打了一只鼹鼠后,还能打另一只,我们可以在它们之间连权值为1的边.于是答案就是 以m为终点的最长路长度+1.建反图,就是单源最长路. MLE TLE 一时爽. #include&l ...

  8. bzoj1207 [HNOI2004]打鼹鼠——LIS

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1207 这题和求LIS有点像,打这一只鼹鼠一定可以从打上一只鼹鼠转移过来: 所以不用考虑机器人 ...

  9. 【题解】Luogu p2285 BZOJ1207 [HNOI2004]打鼹鼠

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

随机推荐

  1. 共享表空间VS独立表空间

    基础概念:共享表空间 VS 独立表空间 [共享表空间] 又称为system tablespace系统表空间,a small set of data files (the ibdata files) . ...

  2. 分享一个集成在项目中的REST APIs文档框架swagger

    1 为什么是使用swagger? 1-1 当后台开发人员开发好接口,是不是还要重新书写一份接口文档提给前端人员,当然对于程序员最不喜欢的就是书写文档(当然文档是必须的,有利于项目的维护) 1-2 当后 ...

  3. 解决cookies存储中文报错问题

    URLEncoder.encode("username", "UTF-8"); URLDecoder.decode("123", " ...

  4. java库中的具体的集合

    1.ArrayList  一种可以动态增长和缩减的索引序列:速度较慢适合用于不修改太多的元素    采用的数组 2.LinkEdList  一种可以在任何位置进行高效的插入和删除操作的有序序列,适合于 ...

  5. 1.11 str 字符串

    字符串属于不可变序列,是 文本序列. 字符串的声明 >>> #字符串的声明既可以用单引号也可以用双引号,这两个能方法在效果上是一样的 >>> s = '' > ...

  6. nyoj737 石子合并(一) 区间DP

    dp[x][y]表示合并[x, y]区间的石子的最小花费,将区间长度递增枚举即可. AC代码: #include<cstdio> #include<algorithm> usi ...

  7. 通讯服务类API调用的代码示例合集:短信服务、手机号归属地查询、电信基站查询等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 短信服务:通知类和验证码短信,全国三网合一通道,5秒内到达,费用低 ...

  8. tcp/ip 卷一 读书笔记(2)物理层和链路层网络

    物理层和链路层网络 术语 链路 是一对相邻结点间的物理线路,中间没有任何其他的交换结点. 数据链路 除了物理线路外,还必须有通信协议来控制这些数据的传输. 帧 数据链路层的协议数据单元(PDU) 串行 ...

  9. Oracle安装、Navicat for Oracle、JDBCl连接、获取表结构

    Oracle安装 Navicat for Oracle配置 Oracle JDBC连接(增删改查) Oracle安装 环境windows 7 64位 安装版本:oracle 11g(64位) 下载地址 ...

  10. 思科ASA5520防火墙telnet、SSH及DHCP设置

    ASA5520远程登录telnet 注:最低安全级别的接口不支持telnet登陆,如OutsideASA(config)# telnet 172.16.0.0 255.255.0.0 inside   ...