POJ 3069 Saruman's Army（萨鲁曼军）

Time Limit: 1000MS   Memory Limit: 65536K

 【Description】 【题目描述】 Saruman the White must lead his army along a straight path from Isengard to Helm’s Deep. To keep track of his forces, Saruman distributes seeing stones, known as palantirs, among the troops. Each palantir has a maximum effective range of R units, and must be carried by some troop in the army (i.e., palantirs are not allowed to “free float” in mid-air). Help Saruman take control of Middle Earth by determining the minimum number of palantirs needed for Saruman to ensure that each of his minions is within R units of some palantir. 白袍萨鲁曼必须带领着他的军队从艾辛格径直前往圣盔谷。为了有序行军，萨鲁曼在军队中分发被称作真知晶球的远见石。每个真知晶球的最大有效范围为R个单位，并且必须由军队中的一些部队携带（即真知晶球不允许中途变动）。 通过使用最少的真知晶球来确保萨鲁曼的每个仆从都在晶球附近的R个单位内，助他掌控中土世界。
 【Input】 【输入】 The input test file will contain multiple cases. Each test case begins with a single line containing an integer R, the maximum effective range of all palantirs (where 0 ≤ R ≤ 1000), and an integer n, the number of troops in Saruman’s army (where 1 ≤ n ≤ 1000). The next line contains n integers, indicating the positions x1, …, xn of each troop (where 0 ≤ xi ≤ 1000). The end-of-file is marked by a test case with R = n = −1. 输入文件有多组测试样例。 每组测试数据第一行，包括一个整数R（0 ≤ R ≤ 1000），表示真知晶球的最大有效范围，还有一个整数n（1 ≤ n ≤ 1000），表示萨鲁曼军的部队数量。 下一行有n个整数，x1， …，xn（0 ≤ xi ≤ 1000）表示每个部队的位置。 R = n = −1表示输入结束。
 【Output】 【输出】 For each test case, print a single integer indicating the minimum number of palantirs needed. 对于每个测试样例，输出一个整数表示最少需要使用的真知晶球数量。
 【Sample Input - 输入样例】 【Sample Output - 输出样例】 0 3 10 20 20 10 7 70 30 1 7 15 20 50 -1 -1 `2` `4`
 【Hint】 【提示】 In the first test case, Saruman may place a palantir at positions 10 and 20. Here, note that a single palantir with range 0 can cover both of the troops at position 20. In the second test case, Saruman can place palantirs at position 7 (covering troops at 1, 7, and 15), position 20 (covering positions 20 and 30), position 50, and position 70. Here, note that palantirs must be distributed among troops and are not allowed to “free float.” Thus, Saruman cannot place a palantir at position 60 to cover the troops at positions 50 and 70. 对于第一个测试样例，萨鲁曼可以在位置10和20放置真知晶球。这样，范围为0的真知晶球可以覆盖同在位置20的部队。 对于第二个测试样例，萨鲁曼可以放置在位置7（覆盖部队1，7和15），位置20（覆盖20和30），位置50，还有位置70。这里要注意，真知晶球必须放在部队中并且不允许变动。因此，萨鲁曼不能在位置60放置真知晶球来覆盖在位置50和70的部队。

【题解】

贪心法，一开始还在纠结应该往前还是往后……

然后看了看提示的第二个测试样例……从当前位置往后贪就好了。

【代码 C++】

``` #include<cstdio>
#include <cstring>
#include <algorithm>
int main(){
], opt;
while (scanf("%d%d", &r, &n)){
) break;
memset(data, , sizeof(data));
; i < n; ++i) scanf("%d", &data[i]);
std::sort(data, data + n);
; i < n; ++opt){
for (j = i; data[j] <= data[i] + r; ++j);
for (i = --j; data[i] <= data[j] + r; ++i);
}
printf("%d\n", opt);
}
;
}```

## POJ 3069 Saruman's Army（萨鲁曼军）的更多相关文章

1. POJ 3617 Best Cow Line ||POJ 3069 Saruman&#39;s Army贪心

带来两题贪心算法的题. 1.给定长度为N的字符串S,要构造一个长度为N的字符串T.起初,T是一个空串,随后反复进行下面两个操作:1.从S的头部删除一个字符,加到T的尾部.2.从S的尾部删除一个字符,加 ...

2. POJ 3069 Saruman&#39;s Army(贪心)

Saruman's Army Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Sub ...

3. poj 3069 Saruman&#39;s Army

Saruman's Army Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8477   Accepted: 4317 De ...

4. poj 3069 Saruman&#39;s Army（贪心）

Saruman's Army Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) Tot ...

5. POJ 3069 Saruman&#39;s Army （模拟）

题目连接 Description Saruman the White must lead his army along a straight path from Isengard to Helm's ...

6. POJ 3069——Saruman&#39;s Army（贪心）

链接:http://poj.org/problem?id=3069 题解 #include<iostream> #include<algorithm> using namesp ...

7. poj 3069 Saruman&#39;s Army 贪心 题解《挑战程序设计竞赛》

地址 http://poj.org/problem?id=3069 题解 题目可以考虑贪心 尽可能的根据题意选择靠右边的点 注意 开始无标记点 寻找左侧第一个没覆盖的点 再来推算既可能靠右的标记点为一 ...

8. poj 3069 Saruman&#39;s Army （贪心）

简单贪心. 从左边开始,找 r 以内最大距离的点,再在该点的右侧找到该点能覆盖的点.如图. 自己的逻辑有些混乱,最后还是参考书上代码.(<挑战程序设计> P46) /*********** ...

9. POJ 3069 Saruman&amp;#39;s Army

Saruman's Army Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6688   Accepted: 3424 De ...

## 随机推荐

1. HDU 5805 NanoApe Loves Sequence (思维题) BestCoder Round #86 1002

题目:传送门. 题意:题目说的是求期望,其实翻译过来意思就是:一个长度为 n 的数列(n>=3),按顺序删除其中每一个数,每次删除都是建立在最原始数列的基础上进行的,算出每次操作后得到的新数列的 ...

2. Ubuntu 14.10安装SecureCRT 7.3

Ubuntu 14.10下安装SecureCRT 7.3 1.软件准备 Ubuntu14.10 x64 SecureCRT7.3的版本:scrt-7.3.0-657.ubuntu13-64.x86_6 ...

3. HDU 2008 数字统计

号码值统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

4. vj1011:记忆化搜索

vj1011:记忆化搜索 这题就是很简单的记忆化搜索即可,和经典题目滑雪简直一模一样 对于记忆化搜索,我也是暑假看了ccy大神的题解才有所领悟的 其实也就是DFS+mark 主要的部分 int sea ...

5. 201521123068 《java程序设计》 第10周学习总结

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题目4-2 1.1 截图你的提交结果(出 ...

6. 页面中iframe中嵌入一个跨域的页面，让这个页面按照嵌入的页面宽高大小显示的方式；iframe嵌套的页面不可以编辑的问题解决方案

<html> <head> <style> body { margin-left: 0px; margin-top: 0px; margin-right: 0px; ...

7. html的标签分类————可以上传的数据篇

html的标签可以分为: 块级标签:div(白板),H系列(加大加粗,H1—H7,字体一般逐渐变小,一般用作标题),p标签(段落之间有间距) 行内标签:span(白板) 此外,标签之间是可以嵌套的.为 ...

8. python静态属性@property、类方法@classmethod、静态方法@staticmethod和普通方法

静态属性:即将类的函数通过@property属性封装,封装后实例调用该函数时,不再需要在函数后面加(),而是用类似调用数据属性的方式直接调用函数名称即可执行函数. 静态属性既可以访问类的属性,也可以访 ...

9. Gym 100463A Crossings （树状数组 逆序对）

Crossings Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100463 Description ...

10. Cache replacement policies 缓存实现算法

Cache replacement policies - Wikipedia https://en.wikipedia.org/wiki/Cache_replacement_policies Cach ...