BZOJ1207_打鼹鼠_KEY

题目传送门

又是一道BZOJ的水题。

DP,F[i]表示第i只鼹鼠出现后可以砸几只。

F[i]=max(F[i],F[j]+1);

但要满足time[i]-time[j]>=abs(x[i]-x[j])+abs(y[i]-y[j])

code

/**************************************************************
    Problem: 1207
    User: yekehe
    Language: C++
    Result: Accepted
    Time:2408 ms
    Memory:976 kb
****************************************************************/

#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int n,m,t[10001],x[10001],y[10001],f[10001];
int main(){
    scanf("%d%d",&n,&m);
        for(int i=1;i<=m;i++)scanf("%d%d%d",&t[i],&x[i],&y[i]);
        for(int i=1;i<=m;i++){
            f[i]=1;
            for(int j=1;j<i;j++){
                if(abs(x[i]-x[j])+abs(y[i]-y[j])<=t[i]-t[j]){
                    f[i]=max(f[i],f[j]+1);
                }
            }
        }
    int ans=0;
        for(int i=1;i<=m;i++)ans=max(ans,f[i]);
    printf("%d",ans);
    return 0;
}

 

posted @ 2017-09-25 19:16  Cptraser  阅读(86)  评论(0编辑  收藏  举报