HNOI2004 打鼹鼠 [DP]

题面传送门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;
}

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

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

时间: 2024-08-29 15:53:26

HNOI2004 打鼹鼠 [DP]的相关文章

BZOJ 1207: [HNOI2004]打鼹鼠( dp )

dp.. dp[ i ] = max( dp[ j ] + 1 ) ---------------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<cmath> #define rep( i , n ) for

1207: [HNOI2004]打鼹鼠(DP)

Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个nn的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气.你可以控制一个机器人来打鼹鼠,如果i时刻鼹鼠在某个网格中出现,而机器人也处于同一网格的话,那么这个鼹鼠就会被机器人打死.而机器人每一时刻只能够移动一格或停留在原地不动.机器人的移动是指从当前所处的网格移向相邻的网格,即从坐标为(i,j)的网格移向(i-1, j),(i+1, j),(i,

[BZOJ1207] [HNOI2004] 打鼹鼠 (dp)

Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气.你可以控制一个机器人来打鼹鼠,如果i时刻鼹鼠在某个网格中出现,而机器人也处于同一网格的话,那么这个鼹鼠就会被机器人打死.而机器人每一时刻只能够移动一格或停留在原地不动.机器人的移动是指从当前所处的网格移向相邻的网格,即从坐标为(i,j)的网格移向(i-1, j),(i+1, j),(i

BZOJ-1207: [HNOI2004]打鼹鼠 (LIS类似DP)

1207: [HNOI2004]打鼹鼠 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3595  Solved: 1720[Submit][Status][Discuss] Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气.你可以控制一个机器人来打鼹鼠,如果i时刻鼹鼠在某个网格中出现,

luoguP2285 [HNOI2004]打鼹鼠 x

P2285 [HNOI2004]打鼹鼠 题目描述 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿牛编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气.你可以控制一个机器人来打鼹鼠,如果i时刻鼹鼠在某个网格中出现,而机器人也处于同一网格的话,那么这个鼹鼠就会被机器人打死.而机器人每一时刻只能够移动一格或停留在原地不动.机器人的移动是指从当前所处的网格移向相邻的网格,即从坐标为(i,j)的网格移向(i-1, j

P2285 [HNOI2004]打鼹鼠

P2285 [HNOI2004]打鼹鼠 题目描述 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿牛编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气.你可以控制一个机器人来打鼹鼠,如果i时刻鼹鼠在某个网格中出现,而机器人也处于同一网格的话,那么这个鼹鼠就会被机器人打死.而机器人每一时刻只能够移动一格或停留在原地不动.机器人的移动是指从当前所处的网格移向相邻的网格,即从坐标为(i,j)的网格移向(i-1, j

HNOI2004打鼹鼠(LIS)

大水题-- 不过通过这题我们应该养成一个好习惯:好好看清题-- 竟然没有看到时限 10sec-- 1 var i,j,n,m,ans:longint; 2 f,time,x,y:array[0..15000] of longint; 3 function max(x,y:longint):longint; 4 begin 5 if x>y then exit(x) else exit(y); 6 end; 7 procedure main; 8 begin 9 readln(n,m);ans:=

[BZOJ 1207][HNOI2004]打鼹鼠(Dp)

Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气.你可以控制一个机器人来打鼹鼠,如果i时刻鼹鼠在某个网格中出现,而机器人也处于同一网格的话,那么这个鼹鼠就会被机器人打死.而机器人每一时刻只能够移动一格或停留在原地不动.机器人的移动是指从当前所处的网格移向相邻的网格,即从坐标为(i,j)的网格移向(i-1, j),(i+1, j),(i

BZOJ 1207 [HNOI2004]打鼹鼠(简单dp)

BZOJ 1207 题解:做满足条件的最大上升子序列处理即可 1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include <algorithm> 5 #include <map> 6 #include <queue> 7 #include <vector> 8 #include <cstring> 9 #include <