题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1207

题意:

  有一个n*n的网格,接下来一段时间内会有m只鼹鼠出现。

  第i只鼹鼠会在tim[i]秒出现,位置为(x[i],y[i])。数据保证tim[i]递增给出。

  你有一个打鼹鼠的机器,初始位置可以自定。机器每秒钟只能原地不动或者走一格。在某一秒机器位置与鼹鼠出现的位置相同时,认为这个鼹鼠被打到。

  问你最多能打多少鼹鼠。

题解:

  乍一看和HDU 1176 免费馅饼很像:

    dp[i][x][y] = 第i秒在(x,y)最多打的鼹鼠数

  但是时间和空间都会爆。。。

  for循环时间:O(n^4 * m)

  改为记忆化搜索:O(n^2 * m^2)

  (时间 = 枚举起始位置 * 求dp)

  打鼹鼠有一个和最长上升子序列相似的性质:

    打鼹鼠:如果tim[i] < tim[j],那么鼹鼠j只可能在鼹鼠i出现之后打。

    LIS:如果i < j,那么s[j]只可能在考虑完s[i]之后加入答案。

  表示状态:

    dp[i] = max hit

    i:打了第i只鼹鼠

  找出答案:

    max dp[i]

  如何转移:

    dp[i] = max dp[j] + 1 (j < i, tim[i]-tim[j] >= manhattan(ci,cj))

    (j在i之前,并且可以在限定时间内从j到达i(曼哈顿距离))

  边界条件:

    set dp = 1

    至少打了自己。

AC Code:

 // state expression:
// dp[i] = max hit
// i: ith mole is dead
//
// find the answer:
// max dp[i]
//
// transferring:
// dp[i] = max dp[j] + 1 (tim[i]-tim[j] >= manhattan(ci,cj))
//
// boundary:
// set dp = 1
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_M 10005 using namespace std; int n,m;
int ans=;
int x[MAX_M];
int y[MAX_M];
int tim[MAX_M];
int dp[MAX_M]; void read()
{
cin>>n>>m;
for(int i=;i<m;i++)
{
cin>>tim[i]>>x[i]>>y[i];
}
} void solve()
{
for(int i=;i<m;i++)
{
dp[i]=;
for(int j=;j<i;j++)
{
if(tim[i]-tim[j]>=abs(x[i]-x[j])+abs(y[i]-y[j]))
{
dp[i]=max(dp[i],dp[j]+);
}
}
ans=max(ans,dp[i]);
}
} void print()
{
cout<<ans<<endl;
} int main()
{
read();
solve();
print();
}

最新文章

  1. begin
  2. Cosmos —— Big Data at Microsoft
  3. Oracle Database 11g Release 2(11.2.0.3.0) RAC On Redhat Linux 5.8 Using Vmware Workstation 9.0
  4. 搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)
  5. 最小生成树POJ3522 Slim Span[kruskal]
  6. Windows Server 2008 R2 每隔一段时间自动关机解决办法
  7. reqiurejs学习
  8. Frenetic Python实验(一)
  9. MySql5.7-多源复制(多主单从)
  10. hihoCoder#1015 : KMP算法 (KMP模板)
  11. ios优化复制大文件时,如何使内存运用最少且效率最高
  12. cl: cannot open file &#39;kernel32.lib&#39;
  13. 尝试获取TextBox_TextChanged事件订阅列表过程
  14. 使用Discuz!自带参数防御CC攻击以及原理,修改Discuz X 开启防CC攻击后,不影响搜索引擎收录的方法
  15. ElasticSearch 学习记录之ES查询添加排序字段和使用missing或existing字段查询
  16. Linux进程实践(4) --wait避免僵尸进程
  17. asp.net core 系列 8 Razor框架路由(下)
  18. 持续集成一:git上传代码
  19. WPF视频会议系统资料
  20. ABP学习入门系列(三) (领域层中的仓储Repository)

热门文章

  1. HBase1.0以上版本号的API改变
  2. vue2 疑难问题 解析
  3. props default 数组(Array)/对象(Object)的默认值应当由一个工厂函数返回
  4. TCP/IP详解 卷一(第四、五章 ARP、RARP)
  5. bottle的几个小坑
  6. Siteserver平台搭建
  7. 【BLE】CC2541之自己定义按键
  8. java nio读取和写入文件
  9. openwrt patch
  10. XMPP协议概述