poj 3069 Saruman's Army 贪心 题解《挑战程序设计竞赛》
地址 http://poj.org/problem?id=3069
题解
题目可以考虑贪心 尽可能的根据题意选择靠右边的点
注意
开始无标记点 寻找左侧第一个没覆盖的点 再来推算既可能靠右的标记点为一轮
我最开始就是轮次的操作理解错误 结果wa了
ac代码如下

1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 5 6 using namespace std; 7 8 /* 9 poj3069 10 11 题目大意:一个直线上有N个点。点i的距离是Xi。 12 从这些点中选取若干个加上标记。 13 要求:对于每个点,与其距离为R的范围内必有做标记的点(包括自身)。 14 求至少标记多少点才能满足要求。 15 16 输入 17 N=6 R =10 18 X={1 7 15 20 30 50} 19 输出 20 3 21 22 23 Sample Input 24 25 0 3 26 10 20 20 27 10 7 28 70 30 1 7 15 20 50 29 -1 -1 30 Sample Output 31 32 2 33 4 34 */ 35 int nodes[100010]; 36 37 int solve(int r,int n) 38 { 39 int count = 0; 40 41 int leftNotCover = 0; 42 int currMark = 0; 43 44 while (leftNotCover < n) { 45 //找到最左边 第一个未覆盖的点 46 if (leftNotCover != 0) { 47 while (currMark < n && nodes[leftNotCover] - nodes[currMark] <= r) leftNotCover++; 48 if (leftNotCover >= n) break; 49 } 50 51 currMark = leftNotCover; 52 while (currMark < n && nodes[currMark] - nodes[leftNotCover] <= r) currMark++; 53 count++; 54 currMark = currMark - 1; 55 leftNotCover = currMark + 1; 56 } 57 58 59 return count; 60 } 61 62 int main() 63 { 64 int r = 0; 65 int n = 0; 66 while (1) { 67 cin >> r >> n; 68 if (r == -1 || n == -1) return -1; 69 70 for (int i = 0; i < n; ++i) { 71 cin >> nodes[i]; 72 } 73 sort(nodes, nodes + n); 74 cout <<solve(r, n) << endl; 75 } 76 77 return 0; 78 }
作 者: itdef
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话