码迷,mamicode.com
首页 > 其他好文 > 详细

HNOI2004 打鼹鼠 [DP]

时间:2017-12-30 12:23:47      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:++i   log   const   gpo   register   name   code   cpp   down   

题面传送门biubiubiu

题解

好水啊。。。可以发现time是递增的,那么就是求最长上升子序列,\(O(M^2)\)的复杂度是可以过的。

Code

#include <bits/stdc++.h>

using namespace std;

const int max_m=10000+5;

int N,M,ans;
int X[max_m],Y[max_m],T[max_m],dp[max_m];

inline int read()
{
    register int x=0,v=1;
    register char ch=getchar();
    while(!isdigit(ch))
    {
        if(ch==‘-‘) v=-1;
        ch=getchar();
    }
    while(isdigit(ch))
    {
        x=(x<<1)+(x<<3)+ch-‘0‘;
        ch=getchar();
    }
    return x*v; 
}

int main()
{
    int t;
    N=read(),M=read();
    for(register int i=1;i<=M;++i)
    {
        T[i]=read(),X[i]=read(),Y[i]=read();
        dp[i]=1;
        for(register int j=1;j<i;++j)
        {
            t=abs(X[i]-X[j])+abs(Y[i]-Y[j]);
            if(T[i]-T[j]>=t) dp[i]=max(dp[i],dp[j]+1);
        }
        ans=max(ans,dp[i]);
    }
    printf("%d\n",ans);
    return 0;
}

博主是蒟蒻,有错误请指出,谢谢!

HNOI2004 打鼹鼠 [DP]

标签:++i   log   const   gpo   register   name   code   cpp   down   

原文地址:https://www.cnblogs.com/zcdhj/p/8148235.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!