bzoj 1207

n 似乎没有任何用。

先把鼹鼠按照出现顺序排序,然后如果打完第 i 只鼹鼠还能去打第 j 只鼹鼠必须第 j 只鼹鼠出现的时间 - 第 i 只鼹鼠出现的时间 <= 两只鼹鼠的哈曼顿距离。

#include"cstdio"
#include"cctype"
#include"cmath"
#include"algorithm"
using namespace std;
int read()
{
    int c,x=0; while(!isdigit(c=getchar()));
    while(x=x*10+c-'0',isdigit(c=getchar()));
    return x;
}
struct mouse
{
    int t,x,y;
    mouse(){}
    mouse(int y,int x,int t):t(t),x(x),y(y){}
}mice[10000];
int f[10000];
bool comp(mouse a,mouse b)
{
    return a.t<b.t;
}
bool check(mouse a,mouse b)
{
    return abs(a.x-b.x)+abs(a.y-b.y)<=a.t-b.t;
}
int main()
{
    read();
    int m=read(),ans=0;
    for(int i=0;i<m;i++) mice[i]=mouse(read(),read(),read());
    sort(mice,mice+m,comp);
    for(int i=0;i<m;i++)
    {
        f[i]=1;
        for(int j=0;j<i;j++) if(check(mice[i],mice[j])) f[i]=max(f[j]+1,f[i]);
        ans=max(f[i],ans);
    }
    printf("%d",ans);
    return 0;
}

 

posted @ 2018-02-26 14:38  312432424  阅读(92)  评论(0编辑  收藏  举报