zoukankan      html  css  js  c++  java
  • bzoj P1207

    这道题目包含了一定的优先策略,所以是不能用贪心解决的。。
    所以是一道dp题
    首先,我们将机器人放在第一只鼹鼠的洞,这样就能得到局部最优解
    接着,我们考虑可以从第j只地鼠出现的时间开始,一直向第i只鼹鼠出现的地方前进,
    或者是每次看一看能不能在下一只地鼠出现前走到哪里,如果不能,就不要浪费时间过去
    如果能的话,就取一个最优解
    证明:因为每只地鼠都会出现,但是他们被打死或者没被打死都不会影响到后面的鼹鼠出现,
    所以是无后效性的,可以用dp解决:
    #include<bits/stdc++.h>
    using namespace std;
    int n,m,f[10010];
    struct node{
    int t,x,y;
    }a[
    10010];
    int main(){
    scanf(
    "%d%d",&n,&m);
    for(int i=1;i<=m;i++)scanf("%d%d%d",&a[i].t,&a[i].x,&a[i].y);
    for(int i=1;i<=m;i++){
    f[i]
    =1;
    for(int j=i-1;j>=1;j--)
    if(abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y)<=a[i].t-a[j].t)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;
    }
  • 相关阅读:
    eval解析的函数传参 object array
    whistle证书过期或不信任
    isa hasa的区别、及理解
    JVM工作原理和特点
    Cookie跨域操作
    关闭当前窗口js
    css遮罩层
    js 获得两个数组的重复元素
    主页变灰
    js 格式化日期
  • 原文地址:https://www.cnblogs.com/heqingyu/p/7683087.html
Copyright © 2011-2022 走看看