poj3069 Saruman's Army(经典贪心)
2017-03-15 21:24
363 查看
http://poj.org/problem?id=3069
题意:给出范围R,被标记的点可以覆盖范围内的点,求用多少个点就可以完全覆盖所有点。
思路:这道题真的泪奔了。没看书上的思路,先是看见有重复元素去重,贪心策略还给选错了,麻烦了好多。。还特判了起点的情况,结果以为过了样例就沾沾自喜,无限WA,真的是彻底错了。
首先是贪心策略的选择,范围是两边的啊。。说不清,刚开始也不知道自己怎么的就选成了一边。。
接着是模拟,基本都是挑战上的模拟方法,我想说我根本没想到好伐。不知道怎么表达,就是觉得他这种方法太精辟了,没一点拖泥带水。。
只有我觉得这是道好题吗。。
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <queue>
#include <iostream>
using namespace std;
typedef long long ll;
const int N = 1005;
const int INF = 0x3f3f3f3f;
int main()
{
// freopen("in.txt", "r", stdin);
int dis
;
int R, n;
while(~scanf("%d%d", &R, &n))
{
if(R==-1 && n==-1) break;
for(int i = 0; i < n; i++)
scanf("%d", &dis[i]);
sort(dis, dis+n);
int i = 0, left, mid, ans = 0;
while(i < n)
{
left = dis[i++];//顺便把i变成下一个点下标,直接判断下一个,代表范围的起点
while(i<n && dis[i]<=left+R) i++;//跳出循环后i为超出范围点的下标
mid = dis[i-1];//选择被标记点
while(i<n && dis[i]<=mid+R) i++;//同样是找出超出范围点下标,下一次循环就在这个超出点,也就是另一个范围了!
ans++;
}
printf("%d\n", ans);
}
return 0;
}
题意:给出范围R,被标记的点可以覆盖范围内的点,求用多少个点就可以完全覆盖所有点。
思路:这道题真的泪奔了。没看书上的思路,先是看见有重复元素去重,贪心策略还给选错了,麻烦了好多。。还特判了起点的情况,结果以为过了样例就沾沾自喜,无限WA,真的是彻底错了。
首先是贪心策略的选择,范围是两边的啊。。说不清,刚开始也不知道自己怎么的就选成了一边。。
接着是模拟,基本都是挑战上的模拟方法,我想说我根本没想到好伐。不知道怎么表达,就是觉得他这种方法太精辟了,没一点拖泥带水。。
只有我觉得这是道好题吗。。
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <queue>
#include <iostream>
using namespace std;
typedef long long ll;
const int N = 1005;
const int INF = 0x3f3f3f3f;
int main()
{
// freopen("in.txt", "r", stdin);
int dis
;
int R, n;
while(~scanf("%d%d", &R, &n))
{
if(R==-1 && n==-1) break;
for(int i = 0; i < n; i++)
scanf("%d", &dis[i]);
sort(dis, dis+n);
int i = 0, left, mid, ans = 0;
while(i < n)
{
left = dis[i++];//顺便把i变成下一个点下标,直接判断下一个,代表范围的起点
while(i<n && dis[i]<=left+R) i++;//跳出循环后i为超出范围点的下标
mid = dis[i-1];//选择被标记点
while(i<n && dis[i]<=mid+R) i++;//同样是找出超出范围点下标,下一次循环就在这个超出点,也就是另一个范围了!
ans++;
}
printf("%d\n", ans);
}
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【贪心】
- POJ3069-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(贪心)
- B - Saruman's Army(贪心 最少圆覆盖)
- POJ 3069 Saruman's Army(贪心+区间覆盖)
- 贪心算法——字典序最小问题,Saruman‘s Army
- POJ 3069 Saruman's Army (贪心)
- POJ 3069 - Saruman's Army(贪心)
- Cpp环境【POJ3069】【Vijos2995】 萨鲁曼的大军 Saruman's Army