POJ 3069 Saruman’s Army


原题

https://vjudge.net/problem/POJ-3069

白种人萨鲁曼必须带领他的军队沿着从艾辛格到圣盔谷的直线前进。为了跟踪他的部队,萨鲁曼在部队中分配了看得见的石头,这些石头被称为palantirs。每个palantir都有一个最大有效距离的R单位,并且必须由军队中的某些部队携带。, palantirs不允许在半空中“自由漂浮”)。帮助萨鲁曼控制中土世界,通过确定萨鲁曼所需要的最低帕兰提尔数来确保他的每个随从都在某个帕兰提尔的R单位之内。

Input测试文件将包含多个用例。每个测试用例都以一行开始,其中包含一个整数R、所有palantirs的最大有效范围(其中0≤R≤1000)和一个整数n,即萨鲁曼军队的军队数量(其中1≤n≤1000)。下一行包含n个整数,表示每个部队的位置x1,…,xn(其中0≤xi≤1000)。文件结束由R = n = - 1的测试用例标记。

输出每个测试用例,打印一个整数,表示所需palantirs的最小数量。

Sample Input

0 3
10 20 20
10 7
70 30 1 7 15 20 50
-1 -1

Sample Output

2
4

提示:
在第一个测试用例中,萨鲁曼可以将palantir放置在第10和第20位置。在这里,请注意一架射程为0的palantir可以同时覆盖20号位置的两支部队。
在第二个测试用例中,萨鲁曼可以将palantirs放置在位置7(覆盖1、7和15处的部队)、位置20(覆盖20和30处)、位置50和位置70处。这里要注意的是,palantirs必须分发给部队,不能“自由浮动”。“因此,萨鲁曼无法在60号阵地部署一个帕兰提尔来掩护50号和70号阵地的部队。


题解

题意:在一条线段上有n个点,你可以标记一个点来覆盖它左右距离R以内的点,现在要求你标记最少的点来使所有的点被覆盖。
思路:每次都找到最后的一个点,然后从这个点的最后一个点的下一个点再找。
从第一个点开始找到它所能覆盖的右边最远的一个点,标记该点,然后找到这个点所能覆盖右边最远的点,从这个点的右边一个点重复之前的操作。具体看代码。

#include<iostream>
#include<algorithm>using namespace std;const int Maxn = 1000 + 5;
int r, n, sum;//r为距离,n为数量,sum记录结果
int arr[Maxn];
int main() {while(cin >> r >> n) {if(r == -1 && n == -1)return 0;for(int i = 0; i < n; i++)cin >> arr[i];sort(arr, arr + n);//先排序sum = 0;for(int i = 0; i < n;) {//这里的i++别忘了删for(int j = n - 1; j >= i; j--)//从最右边开始遍历直到找到i点所能覆盖最右边的点if(arr[i] + r >= arr[j]) {sum++;//标记该点i = j;//记住该点break;}for(int j = n - 1; j >= i; j--)从最右边开始遍历直到找到i点所能覆盖最右边的点if(arr[i] + r >= arr[j]) {i = j + 1;//记住下一个点,break;}}cout << sum << endl;}return 0;
}

【题解】POJ 3069 Saruman's Army(贪心)相关推荐

  1. POJ 3069 Saruman's Army(贪心)

    题目链接:http://poj.org/problem?id=3069 Description Saruman the White must lead his army along a straigh ...

  2. POJ 3069 Saruman's Army(萨鲁曼军)

    POJ 3069 Saruman's Army(萨鲁曼军) Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] Saruman ...

  3. 【贪心】POJ - 3069 Saruman's Army

    题意 给n个点,从中选择若干个标记,在距离标记为r的范围内包含其他的点,最少需要几个标记,才能将所有的点包含在内 思路 贪心.先排序,从最左边的点开始找到此半径内最大的点,则此点就是第一个标记,以此类 ...

  4. POJ - 3069 Saruman's Army 萨鲁曼的大军 贪心 重庆一中高2018级竞赛班第三次测试 2016.7.24 Problem 2

    [问题描述] 萨鲁曼的大军正行进在一条笔直的道路上,由于是在夜晚行军,路上的石头严重地影响了行军速度.于是萨鲁曼决定预先在道路上安装一些路灯,以便士兵们能清楚地看到所有石头. 萨鲁曼给出n块石头的位置 ...

  5. POJ3069 Saruman's Army【贪心】

    问题链接:POJ3069 Saruman's Army. 题意简述:直线上有N个点.点i的距离是Xi.从这N个点中选取若干点加上标记.对于每个点,与其距离为R的范围内必有做标记的点(包括自身).求至少 ...

  6. 贪心:Fence Repair、Saruman's Army

    Fence Repair Farmer John wants to repair a small length of the fence around the pasture. He measures ...

  7. 【ACM】POJ 3069

    [问题描述] Saruman the White must lead his army along a straight path from Isengard to Helm's Deep. To k ...

  8. Saruman's Army

    传送门 题目 Saruman the White must lead his army along a straight path from Isengard to Helm's Deep. To k ...

  9. Saruman's Army (POJ3069)

    Saruman's Army 萨鲁曼的大军正行进在一条笔直的道路上,由于是在夜晚行军,路上的石头严重地影响了行军速度.于是萨鲁曼决定预先在道路上安装一些路灯,以便士兵们能清楚地看到所有石头. 萨鲁曼给 ...

最新文章

  1. styleable cannot be resolved or is not a field
  2. python的热潮_Python这么热,要不要追赶Python学习热潮?
  3. 1051 复数乘法(PAT乙级 C++)
  4. 分布式事务中间件 Fescar - 全局写排它锁解读 1
  5. nginx能不能获取到vue项目#后面的内容
  6. python音频特征提取_使用Python对音频进行特征提取
  7. java deadlock oracle_【DEADLOCK】Oracle“死锁”模拟
  8. 生成条形码二维码DataMatrix条码.EAN码.39码.交叉25码.UPC码.128码.93码.ISBN码.Codabar等
  9. 如何以最低廉的价格(249元!!)组装一台Mac黑苹果主机,垃圾佬极限装机!!
  10. android fastboot 最新版,用adb、fastboot拯救你的安卓手机
  11. 盛世乐居回应近期股价波动
  12. MediaCodec编码后视频时长不正确的问题
  13. 若依后台实现表连接查询显示,一对一查询
  14. python 爬虫:爬取91job竞赛题库
  15. 新一代视频编码标准:VVC、AVS3
  16. LaTex学习(五)行内公式与行间公式的表示
  17. 初识 Vertica ,看完白皮书,我都发现了啥【文末赠书】
  18. CSS 奇思妙想 | 巧妙的实现带圆角的三角形
  19. Golang调用FFmpeg转换视频流
  20. 要嫁就嫁程序员:那些你不理解的真实的他们。

热门文章

  1. jQuery-fancybox图片预览
  2. python倒计时定时器_使用python修饰器的定时器倒计时
  3. linux 模拟hba卡闪断,服务器HBA卡常见问题
  4. 拼多多面试问了数据库基础知识,今天分享出来
  5. 面试又双叒叕被问到数据库三大范式,该怎么答才能让面试官认可呢
  6. CSDN - 盛洪宇(技术胖) - Vue2.x从入门到实战
  7. 市场上股票接盘合作,大宗交易锁仓返点资源变现渠道
  8. 360 android系统 流量,警惕天价流量费 360手机卫士Android版增流量监控
  9. 数据库基础考点笔记-3
  10. cij期刊_核心期刊评价与文献计量学研究CJournalJLX