zoukankan      html  css  js  c++  java
  • [HNOI2004]打鼹鼠

    题目大意:
      有一个$n imes n$的格子,按顺序出现$m(mleq10000)$只鼹鼠。一开始你可以任选一个位置作为一个起点,每秒钟你可以选择原地不动或走到任一与当前位置四连通的格子上。第$t_i$秒会在$(x_i,y_i)$上出现一个鼹鼠,若你当时刚好在这个格子上,就算作成功打到了这个鼹鼠。问最多能打到几个鼹鼠?

    思路:
      用$f[i]$表示前$i$个鼹鼠中最多能打到几个。转移时判断一下曼哈顿距离是否小于等于时间差即可。

     1 #include<cstdio>
     2 #include<cctype>
     3 #include<algorithm>
     4 inline int getint() {
     5     register char ch;
     6     while(!isdigit(ch=getchar()));
     7     register int x=ch^'0';
     8     while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
     9     return x;
    10 }
    11 const int M=10000;
    12 int t[M],x[M],y[M],f[M];
    13 int main() {
    14     const int n=getint(),m=getint();
    15     int ans=0;
    16     for(register int i=0;i<m;i++) {
    17         t[i]=getint(),x[i]=getint(),y[i]=getint(),f[i]=1;
    18         for(register int j=0;j<i;j++) {
    19             if(std::abs(x[i]-x[j])+std::abs(y[i]-y[j])<=t[i]-t[j]) {
    20                 f[i]=std::max(f[i],f[j]+1);
    21             }
    22         }
    23         ans=std::max(ans,f[i]);
    24     }
    25     printf("%d
    ",ans);
    26     return 0;
    27 }
  • 相关阅读:
    C#异步编程由浅入深(一)
    基于Jira的运维发布平台的设计与实现
    kubeadm部署K8S并使用containerd做运行时
    代码阅读
    黑客攻防 1
    Linux 常用指令篇1
    期刊管理系统总结
    docker安装RabbitMQ
    Centos7安装mysql8.0教程
    java动态编译
  • 原文地址:https://www.cnblogs.com/skylee03/p/8454326.html
Copyright © 2011-2022 走看看