POJ-3069 Saruman's Army---区间选点
2024-08-29 09:52:31
题目链接:
https://vjudge.net/problem/POJ-3069
题目大意:
在一条直线上,有n个点。从这n个点中选择若干个,给他们加上标记。对于每一个点,其距离为R以内的区域里必须有一个被标记的点。问至少要有多少点被加上标记。
思路:
我们从最左边的开始考虑。对于这个点,到距其R以内的区域必须要有带有标记的点。带有标记的点一定在其右侧(包含这个点本身)。给从最左边开始,距离为R以内的最远的点加上标记,尽可能的覆盖更靠右边的点。对于添加了标记的点右侧相距超过R的下一个点,采用同样的方法找到最右侧R距离以内最远的点添加标记。在所有点都被覆盖之前不断重复这一过程。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std; int n, r;
int a[]; int main()
{
while(scanf("%d%d", &r, &n) != EOF)
{
if(r < )break;
for(int i = ; i < n; i++)scanf("%d", &a[i]);
sort(a, a + n);
int tot = ;
for(int i = ; i < n; i++)
{
int left = a[i];
int star = a[i];
for(; i < n; i++)
{
if(a[i] - left > r)break;
star = a[i];
}
tot++;
i--;
//cout<<star<<endl;
for(; i < n; i++)
{
if(a[i] - star > r)break;
}
i--;
}
cout<<tot<<endl;
}
return ;
}
最新文章
- 阿里云直播 C# SDK 如何使用
- c# 针对SAP服务通讯
- 解决Win7 软件图标不显示--Win7图标异常,快捷方式不显示解决方法
- Entity Framework 6.0 源码解读笔记(一)
- git reflog 和git log :no branch git 提交方式
- C#中hashtable的赋值、取值、遍历、排序操作
- U1总结
- 资源文件(.RES)的应用
- TokuDB性能测试报告
- [原创]一种专门用于前后端分离的web服务器(JerryServer)
- Shell脚本学习 - 函数,输入输出重定向,文件
- CentOS7部分调优命令
- Pack
- HTTP请求协议
- Node.js学习起步
- Python实现百度贴吧自动顶贴机
- ubuntun 18.04 安装google浏览器
- Python中*args和**kwargs
- MVC使用Redis实现分布式锁
- FluentScheduler:开源轻量级定时任务调度架构