poj 3069 Saruman's Army
来源:互联网 发布:知轩藏书下载 编辑:程序博客网 时间:2024/06/08 14:52
题目链接
Saruman’s Army
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 9945 Accepted: 5006
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.
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.
Output
For each test case, print a single integer indicating the minimum number of palantirs needed.
Sample Input
0 3
10 20 20
10 7
70 30 1 7 15 20 50
-1 -1
Sample Output
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.
Source
Stanford Local 2006
#include<cstring>#include<cstdio>#include<algorithm>using namespace std ;const int MAXN = 1000+10;int a[MAXN];int main(){ int n , r; while(scanf("%d%d" , &r,&n), n!=-1,r!=-1){ for(int i = 0 ; i<n ; i++){ scanf("%d" , a[i]); } sort(a,a+n); int ans = 0; int i = 0; while(i<n){ int x = a[i++]; while(i<n && x+r >=a[i]) i++; int p = a[i-1]; while(i<n && p+r>=a[i]) i++; ans++; } printf("%d", ans); } return 0;}
- poj 3069 Saruman's Army
- POJ 3069 - Saruman's Army
- POJ-3069-Saruman's Army
- POJ 3069 Saruman's Army
- POJ 3069 Saruman's Army
- POJ-3069 Saruman's Army
- POJ-3069-Saruman's Army
- poj 3069 Saruman's Army
- POJ-3069-Saruman's Army
- POJ 3069 Saruman‘s Army
- POJ 3069 Saruman's Army
- POJ 3069 Saruman's Army
- poj 3069 Saruman's Army
- POJ Saruman's Army 3069
- POJ 3069 Saruman's Army
- POJ-3069 Saruman's Army
- POJ 3069 Saruman's Army
- POJ 3069 Saruman's Army
- 同步和异步+阻塞和非阻塞
- git使用小结
- windows server 2012 IE增强的安全配置如何关闭
- mac 下从设置启动mysql 失败,“Warning:The /usr/local/mysql/data directory is not owned by the 'mysql' or '_mys
- 【一步步学OpenGL 27】 -《公告牌技术与几何着色器》
- poj 3069 Saruman's Army
- 基础算法(三)---快速排序(Java)
- python2 与python3 input变化
- HDU
- 模态、下拉菜单 、切换标签页 区别 (Bootstrap)
- Windows PE变形练手3-把通用模板机器码直接覆盖目标PE
- Java抽象类与接口的区别
- HackerRank Medium(30) Maximal AND Subsequences 贪心+计数
- git常用的命令