zoukankan      html  css  js  c++  java
  • POJ_3069 Saruman's Army 【贪心】

    一、题面

    POJ3069

    二、题意分析

    我的理解是,可以在每个点设置一个监测点,能够监测到范围R内的所有其他点,那么问给出N个点的一维位置,需要在其中挑多少个监测点把所有点都监测到。

    贪心解决:

      1.先排序。

      2.考虑第一个点,因为每个点是必须要监测的,那么第一个点需要被监测到,它可以是监测点,也可以是被监测点。贪心的想,为了能监测更多的点,让第一个点作为被监测的点,且是监测范围内最边界上的点。

      3.现在需要考虑,当第一个点往右探测R范围时,最后一个点将是需要设置的监测点。

      4.以这个监测点再往右扫R范围。

      5.完成了一个监测点及其范围内点的覆盖。后面的点类似处理。

    三、AC代码

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <algorithm>
     4 
     5 using namespace std;
     6 
     7 const int MAXN = 1e3;
     8 int Data[MAXN+3], N, R;
     9 
    10 int solve()
    11 {
    12     int i = 0, ans = 0, cur;
    13     while(i < N)
    14     {
    15         cur = Data[i++];
    16         while(i < N && Data[i] <= cur+R)
    17             i++;
    18         cur = Data[i-1];
    19         while(i < N && Data[i] <= cur + R)
    20             i++;
    21         ans++;
    22     }
    23     return ans;
    24 }
    25 
    26 int main()
    27 {
    28     freopen("input.txt", "r", stdin);
    29     while(scanf("%d %d", &R, &N) != EOF && R != -1)
    30     {
    31         for(int i = 0; i < N; i++)
    32             scanf("%d", &Data[i]);
    33         sort(Data, Data+N);
    34         printf("%d
    ", solve() );
    35     }
    36     return 0;
    37 }
    View Code
  • 相关阅读:
    Java程序性能优化——让你的java程序更快、更稳定
    synchronized和ReentrantLock
    Java集合——ConcurrentHashMap
    SpringMVC流程
    计算机网络http,https,tcp,udp,get,post
    JVM类加载机制
    关于strcpy和memcpy
    C语言指针
    malloc函数详解
    进程和线程
  • 原文地址:https://www.cnblogs.com/dybala21/p/10105670.html
Copyright © 2011-2022 走看看