zoukankan      html  css  js  c++  java
  • [BZOJ 1207][HNOI2004]打鼹鼠(Dp)

    Description

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

    Solution

    …最长上升子序列

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #define Max(a,b) (a>b?a:b)
    using namespace std;
    int n,m,ans=1;
    int Time[10005],x[10005],y[10005],dp[10005];
    int Read()
    {
        int x=0,f=1;char c=getchar();
        while(c<'0'||c>'9'){
            if(c=='-')f=-1;c=getchar();
        }
        while(c>='0'&&c<='9'){
            x=x*10+c-'0';c=getchar();
        }
        return x*f;
    }
    int main()
    {
        n=Read(),m=Read();
        for(int i=1;i<=m;i++)
        {
            Time[i]=Read(),x[i]=Read(),y[i]=Read();
            dp[i]=1;
            for(int j=1;j<i;j++)
            {
                if(abs(x[i]-x[j])+abs(y[i]-y[j])<=Time[i]-Time[j])
                dp[i]=Max(dp[i],dp[j]+1),ans=Max(ans,dp[i]);
            }
        }
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    ECharts之柱状图 饼状图 折线图
    Vue自定义指令(directive)
    HDU 1231 最大连续子序列
    POJ 2533 Longest Ordered Subsequence
    HDU 1163 Eddy's digital Roots
    HDU 2317 Nasty Hacks
    HDU 2571 命运
    HDU 4224 Enumeration?
    HDU 1257 最少拦截系统
    HDU 2740 Root of the Problem
  • 原文地址:https://www.cnblogs.com/Zars19/p/6696975.html
Copyright © 2011-2022 走看看