zoukankan      html  css  js  c++  java
  • [poj3069] Saruman's Army

    题意:

    给出n个点的坐标,每个点有一个半径r,先可以对点染色,要求每个点的覆盖范围内必有一被染色的点。

    题解:

    首先可以将点转化为区间来看;

    发现从最左边的点开始,每次选能覆盖到的最右边的点总是不会差的;

    选到那个点之后,再从那个点开始跳到那个点r之外的第一个点;

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #define ll long long
    using namespace std;
    
    int a[1010];
    
    int gi() {
      int x=0,o=1; char ch=getchar();
      while(ch!='-' && (ch<'0' || ch>'9')) ch=getchar();
      if(ch=='-') o=-1,ch=getchar();
      while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
      return o*x;
    }
    
    int main() {
      int r,n,ans,i,j,k;
      while(~scanf("%d%d", &r, &n) && n!=-1 && r!=-1) {
        ans=0;
        for(i=1; i<=n; i++) a[i]=gi();
        sort(a+1,a+n+1);
        for(i=1; i<=n; i++) {
          j=i;
          while(j+1<=n && a[i]+r>=a[j+1]) j++;
          ans++,k=j;
          while(a[j]+r>=a[k+1] && k+1<=n) k++;
          i=k;
        }
        printf("%d
    ", ans);
      }
      return 0;
    }
    
  • 相关阅读:
    [solution]xdebug正确配置,但不显示错误信息
    SIGCHLD信号
    sigsuspend
    信号引起的竞态
    智力面试题
    可重入和不可重入
    信号—信号处理函数(捕捉)
    PCB信号集
    信号产生的原因:
    信号初步
  • 原文地址:https://www.cnblogs.com/HLXZZ/p/7663713.html
Copyright © 2011-2022 走看看