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

打鼹鼠 bzoj-1207 HNOI-2004

题目大意题目链接

注释:略。


想法

$dp_i$表示打到了第$i$个鼹鼠时最多打了多少个鼹鼠。

$O(n)$转移即可。

总时间复杂度$O(n^2)$。

Code:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 10010 
using namespace std;
struct Node {int tm,x,y;}a[N]; int dp[N];
inline char nc() {static char *p1,*p2,buf[100000]; return (p1==p2)&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}
int rd() {int x=0; char c=nc(); while(!isdigit(c)) c=nc(); while(isdigit(c)) x=(x<<3)+(x<<1)+(c^48),c=nc(); return x;}
int main()
{
	int n=rd(),m=rd(); for(int i=1;i<=m;i++)
	{
		a[i].tm=rd(),a[i].x=rd(),a[i].y=rd();
		dp[i]=1; for(int j=1;j<i;j++) if(abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y)<=a[i].tm-a[j].tm)
		{
			dp[i]=max(dp[i],dp[j]+1);
		}
	}
	int ans=0; for(int i=1;i<=m;i++) ans=max(ans,dp[i]);
	printf("%d\n",ans);
	return 0;
}

小结:水题。

posted @ 2018-12-30 14:41  JZYshuraK_彧  阅读(177)  评论(0编辑  收藏  举报