BZOJ 1207 [HNOI2004]打鼹鼠:dp【类似最长上升子序列】
题目链接: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();
}
BZOJ 1207 [HNOI2004]打鼹鼠:dp【类似最长上升子序列】的更多相关文章
- BZOJ 1207: [HNOI2004]打鼹鼠( dp )
dp.. dp[ i ] = max( dp[ j ] + 1 ) ------------------------------------------------------------------ ...
- BZOJ 1207: [HNOI2004]打鼹鼠【妥妥的n^2爆搜,dp】
1207: [HNOI2004]打鼹鼠 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3259 Solved: 1564[Submit][Statu ...
- 洛谷 P2285 BZOJ 1207 [HNOI2004]打鼹鼠
题目描述 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿牛编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气. ...
- 51nod 1183 编辑距离【线性dp+类似最长公共子序列】
1183 编辑距离 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个 ...
- bzoj 1207: [HNOI2004]打鼹鼠【dp】
跟简单的dp,设f[i]表示前i只最多打几只,因为起点不确定,所以f[i]可以从任意abs(x[i]-x[j])+abs(y[i]-y[j])<=abs(time[i]-time[j])的j&l ...
- bzoj 1207: [HNOI2004]打鼹鼠 (dp)
var n,m,i,j,ans:longint; x,y,time,f:..]of longint; begin readln(n,m); to m do readln(time[i],x[i],y[ ...
- bzoj 1207 [HNOI2004]打鼹鼠 小技巧
Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探 ...
- bzoj 1207: [HNOI2004]打鼹鼠
1207: [HNOI2004]打鼹鼠 Time Limit: 10 Sec Memory Limit: 162 MB Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜 ...
- 1207. [HNOI2004]打鼹鼠【线性DP】
Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探 ...
随机推荐
- [C++设计模式] state 状态模式
<head first 设计模式>中的样例非常不错,想制造一个自己主动交易的糖果机,糖果机有四个状态:投入钱不足,投入钱足够,出售糖果,糖果售罄. 糖果机的当前状态处于当中不同的状态时,它 ...
- odoo图片显示
如果在odoo客户端展示图片, 可以用 url( data:image/png;base64, 图片base64编码过的内容) 展示, 例如 url(data:image/png;ba ...
- SharePoint 2013 和 SharePoint 2010 功能对比
微软的网站找东西太麻烦了,在这记录一下. 从 SharePoint 2010 更改为 SharePoint 2013 http://technet.microsoft.com/zh-cn/librar ...
- iOS陆哥开发笔记(七) (AVFoundation简单介绍)
在AVFoundation框架中AVAudioRecorder类专门处理录音操作,支持多种音频格式. 以下是经常使用的属性和方法: 属性 说明 @property(readonly, getter=i ...
- mybatis数据查询返回值
查询: 返回值是整数. 小于0是查询的数据不存在,大于0是查询的数据已经存在. 修改: 返回值是整数. 大于0是修改的数据成功,否则就是失败. 添加: 和修改同理.
- Oracle更新时间字段
update field set BEGINDATE=to_date('2015-05-03 10:30:20','yyyy-mm-dd hh24:mi:ss') where NOO='01'
- redis数据迁移操作
redis客户端连接命令,分别连接旧环境中的主从redis Src目录下./redis-cli -h IP -p PORT 使用info replication 命令找出主redis使用客户端命令连接 ...
- 11 linux nginx上安装ecshop 案例
一: nginx上安装ecshop 案例 (1)解压到 nginx/html下 浏览器访问:127.0.0.1/ecshop/index.php 出现错误:not funod file 原因:ngin ...
- 【PHP开发】ThinkPHP3.1.3问题集及解决方法
Outline: 无法获取post请求中的url参数的问题 中文存入数据表后为空字符串 1. 无法获取post请求中的url参数的问题 ThinkPHP3.1.3中,如果提交的post请求中,如果要在 ...
- hunnu--11548--找啊找啊找朋友
找啊找啊找朋友 Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit users: 14, ...