poj 3069 贪心 寻找满足某个要求的最大元素
来源:互联网 发布:centos rpm package 编辑:程序博客网 时间:2024/06/05 18:36
和离散中的灯塔问题还不太一样,是要求必须要放在石子的位置上。但是其实思想是一样的,同样是找到最右边的点,但是这里涉及到一个怎么实现的问题。我们的目标是,对于每个点,如果它没有被覆盖,从这个点开始,找到它最右边能覆盖到它的点。
对于实现问题:后来才发现其实和快排差不多。
第一次的代码
#include <iostream>#include <cmath>using namespace std;const int maxn=1005;int a[maxn];int main(int argc, char const *argv[]){int r,n;while(cin>>r>>n){if(r==-1) break;for(int i=0;i<n;i++) cin>>a[i];sort(a,a+n);int ans=0;int pos=-0x99999;for(int i=0;i<n;i++){if(abs(a[i]-pos)<=r) continue;else{int right=i;while(a[right+1]-a[i]<=r) right++;pos=a[right];ans++;}}cout<<ans<<endl;}return 0;}这会有个问题:1.right是n的时候数组越界 (对答案是会有影响的,除非在最后一次才越界(此时答案的ans不会改变),但是如果在之前越界,会改变pos的值),所以应该对right 加上限制
应该加上right+1<n的限制
这里要注意两点:
找满足要求的最大或者最小值,一般是用循环做的,但是特别要注意边界情况的判断,就像快排一样!
这里要注意的是,这个pos的位置可能比当前的i大很多,并且我们发现中间的continue过程其实是可以忽略一些的
(补上i=right)
0 0
- poj 3069 贪心 寻找满足某个要求的最大元素
- 寻找某个大数的最大质数
- 寻找满足二叉查找树性质的最大子树
- 寻找最大数--贪心
- jq中寻找某个元素的特定兄弟元素
- 寻找满足后缀要求的第一个文件名及其类型的C程序实现
- 每天一道LeetCode-----删除序列中指定元素,将满足要求的元素移动到前面
- 在N个不同的元素中寻找最大元素
- 寻找最大数 NYOJ 贪心
- NYOJ448 寻找最大数 【贪心】
- NYOJ448_寻找最大数【贪心】
- NYOJ448寻找最大数,贪心~~
- 在矩阵中寻找满足条件的元素(行、列)
- java 函数式编程 - 判断集合中是否存在满足某个条件的元素
- 字符串(寻找最大元素)
- 寻找连续的元素相加之和为最大的序列
- 【贪心专题】HDU 1800 Flying to the Mars (寻找最大重复元素) && HDU 2124 Repair the Wall (贪心)
- POJ 3040 贪心寻找组合
- Java并发编程:阻塞队列
- Fonticon在企业移动APP开发中的应用研究
- highchar的x轴数据自动生成
- Linux下,Nginx的安装、升级及动态添加模块
- Android导航栏资源总结,单纯防丢!
- poj 3069 贪心 寻找满足某个要求的最大元素
- 2014年-我带领的团队获奖了
- Centos6.5快速配置可用网卡
- XtraGrid排序概述
- nutch在hadoop1.2.1平台中错误总结
- plsql客户端乱码的解决方案
- 站点跳出率那么高,再不微调就“完了”!
- [leetcode-354]Russian Doll Envelopes(java)
- Count Primes