话说俺写博客给自己看的,刷到了发现我好傻逼,别喷!
贪心算法周赛题解
贪心贪心贪心
关于最小点覆盖问题
学习ing,学会贴题目总结
题目描述:
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
题意解释
有一个队伍,相当于一维坐标系,有n个点分布在一维坐标系上。有一些辐射范围为r的联通设备,试图用最少的联通设备使得所有的点在联通设备辐射范围内。
题解
据说就是贪心算法,在每单次处理过程中,取得最大成果。
第一次:把每个点位置从小到大排列,把flag2标记在最左边的位置;
接下来,用i做计数器,寻找最远但是距离flag2不超过r的点,标记为flag1,此处为第一个联通器所在位置;
以fl