POJ3069 Saruman's Army【贪心】
2017-05-21 11:51
260 查看
问题链接:POJ3069 Saruman's Army。
题意简述:直线上有N个点。点i的距离是Xi。从这N个点中选取若干点加上标记。对于每个点,与其距离为R的范围内必有做标记的点(包括自身)。求至少标记多少点才能满足要求。
问题分析:
这个问题可以用贪心法来解决。
先将各个点排序,从小到大顺序找必须标记的点,并且将其距离R以内的点排除。反复这个过程即可。
程序说明:(略)
AC的C++语言程序如下:
/* POJ3069 Saruman's Army */
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1000;
int a
;
int solve(int n, int r)
{
int ans = 0, i = 0;
while(i < n) {
int start = a[i++];
// 遍历start范围内的点
while(i < n && a[i] <= start + r)
i++;
// 标记点计数,标记点
ans++;
start = a[i - 1];
// 遍历start范围内的点
while(i < n && a[i] <= start + r)
i++;
}
return ans;
}
int main()
{
int r, n;
while(cin >> r >> n && !(r == -1 && n == -1)) {
for(int i=0; i<n; i++)
cin >> a[i];
sort(a, a + n);
cout << solve(n, r) << endl;
}
return 0;
}
题意简述:直线上有N个点。点i的距离是Xi。从这N个点中选取若干点加上标记。对于每个点,与其距离为R的范围内必有做标记的点(包括自身)。求至少标记多少点才能满足要求。
问题分析:
这个问题可以用贪心法来解决。
先将各个点排序,从小到大顺序找必须标记的点,并且将其距离R以内的点排除。反复这个过程即可。
程序说明:(略)
AC的C++语言程序如下:
/* POJ3069 Saruman's Army */
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1000;
int a
;
int solve(int n, int r)
{
int ans = 0, i = 0;
while(i < n) {
int start = a[i++];
// 遍历start范围内的点
while(i < n && a[i] <= start + r)
i++;
// 标记点计数,标记点
ans++;
start = a[i - 1];
// 遍历start范围内的点
while(i < n && a[i] <= start + r)
i++;
}
return ans;
}
int main()
{
int r, n;
while(cin >> r >> n && !(r == -1 && n == -1)) {
for(int i=0; i<n; i++)
cin >> a[i];
sort(a, a + n);
cout << solve(n, r) << endl;
}
return 0;
}
相关文章推荐
- poj3069 Saruman's Army 贪心
- POJ3069 Saruman's Army(贪心)
- poj3069 Saruman's Army(经典贪心)
- poj3069 Saruman's Army(贪心,水)
- POJ3069-贪心-Saruman's Army
- poj3069 Saruman's Army 贪心
- POJ 3069 Saruman's Army 【贪心】
- poj3069Saruman's Army
- poj 3069 Saruman's Army【贪心】
- POJ3069-Saruman`s Army
- POJ3069---Saruman's Army()
- B - Saruman's Army(贪心 最少圆覆盖)
- Cpp环境【POJ3069】【Vijos2995】 萨鲁曼的大军 Saruman's Army
- Poj 3069 Saruman's Army【贪心】
- Saruman's Army POJ - 3069【模拟+贪心】
- POJ 3069 Saruman's Army(贪心)
- POJ - 3069 Saruman's Army 萨鲁曼的大军 贪心 重庆一中高2018级竞赛班第三次测试 2016.7.24 Problem 2
- POJ3069 Saruman's Army
- poj3069 Saruman's Army
- poj3069 Saruman's Army