zoukankan      html  css  js  c++  java
  • nyist 610 定长覆盖

    定长覆盖

    时间限制:2000 ms  |  内存限制:65535 KB
    难度:2
    描述

    问题很简单,在一条直线上,坐标从0开始到1000000;现在有n个石子在这条直线上(同一个位置可能有多个石子)

    那么用一个定长为m的杆子去覆盖,请问最多能覆盖多少个石子?

    输入
    输入有多组数据
    第一行有2个整数,n 和 m(n <= 50000,m <= 1000)
    第二行有n个整数代表每个石子的位置(所有的数小于50000)
    输出
    每种情况输出一个整数(最多能覆盖的石子数)
    样例输入
    3 2
    0 0 1
    5 2
    0 1 2 4 5
    样例输出
    3
    
    3

    首先求0--m的和值,然后进行加后减前,就是把后面一个的加上,把最前面的那个删除
    a[1--m+1] = a[0--m] + a[m+1]- a[0];
     1 #include <cstdio>
     2 #include<cstring>
     3 #include <algorithm>
     4 
     5 using namespace std;
     6 
     7 int a[1000005];
     8 
     9 int main()
    10 {
    11     int n,m;
    12     while(scanf("%d%d",&n,&m) != EOF)
    13      {
    14          memset(a,0,sizeof(a));
    15 
    16          int i;
    17          int max = 0;
    18          int t = 0;
    19          for(i = 0; i < n; i++)
    20            {
    21                scanf("%d",&t);
    22                a[t]++;
    23                if(max < t) max = t;
    24            }
    25         if(max <= m)
    26           {
    27               printf("%d\n\n",n);
    28               continue;
    29           }
    30 
    31         int j;
    32         int sum = 0;
    33         for(i = 0; i <= m;i++)
    34            sum += a[i];
    35         int max_sum = sum;
    36         for(; i <= max; i++)
    37          {
    38              sum+=a[i];
    39              sum -= a[i-m-1];
    40              if(max_sum < sum)
    41                max_sum = sum;
    42          }
    43          printf("%d\n\n",max_sum);
    44      }
    45      return 0;
    46 }
    
    
  • 相关阅读:
    emacs配置emacs-clang-complete-async
    emacs之配置自动安装脚本
    vim之YCM配置
    vim之vundle
    emacs之配置php
    kettle的日志
    kettle的报错解决机制
    kettle优化
    将BAT文件注册为服务的方法
    使用powerdesinger逆向生成表结构
  • 原文地址:https://www.cnblogs.com/yyroom/p/3032855.html
Copyright © 2011-2022 走看看