nyoj 586 疯牛
来源:互联网 发布:音乐识别的软件 编辑:程序博客网 时间:2024/06/05 04:09
原题: http://acm.nyist.net/JudgeOnline/problem.php?pid=586
//nyoj 586//即从n个栅栏中选k个,使得这k个栅栏之间的距离要尽可能地大//贪心:要使得任意两个栅栏之间的距离最大,只需要使依次的两个栅栏之间的距离最大,即栅栏1和栅栏2最大,栅栏2根栅栏3最大....就可以保证每两个距离最大 // 而数目已知为k,结果的范围也已知,用二分+贪心查找 #include<iostream>#include<cstdio>#include<algorithm>#include<math.h>using namespace std;int cmp(const void *aa,const void *bb)//由小到大 {int a=*(int *)aa;int b=*(int *)bb;return a>b;}int n,k;int z[100001];int greed(int span)//贪心,假设span是最大距离情况中最小的距离 {int cnt=1;int now=z[0]+span;for(int i=1;i<n;i++){if(z[i]>=now){now=z[i]+span;cnt++;}}if(cnt>=k)return 1;return 0;} int main(){while(~scanf("%d %d",&n,&k)){for(int i=0;i<n;i++){scanf("%d",&z[i]);}qsort(z,n,sizeof(z[0]),cmp);int r=z[n-1]-z[0];//结果范围在l~r int l=0;int rs;while(l<=r)//二分 {int mid=(l+r)/2;if(greed(mid)){rs=mid;l=mid+1;}else{r=mid-1;}}printf("%d\n",rs);} return 0;}
阅读全文
0 0
- Nyoj 586 疯牛
- NYOJ 586 疯牛
- NYOJ 586 疯牛
- NYOJ - 586 疯牛
- 疯牛 nyoj 586
- NYOJ 586 疯牛
- nyoj 586 疯牛
- NYOJ-586 疯牛
- nyoj-586 疯牛
- NYOJ 586 疯牛
- NYOJ-586 疯牛
- NYOJ 586-疯牛(二分)
- nyoj 586 疯牛
- NYOJ-疯牛
- nyoj 586
- nyoj--586(疯牛) && poj --2456
- NYOJ-586 疯牛 二分枚举+贪心
- nyoj 586 疯牛(二分+贪心)
- selenium+python+BeautifulSoup爬取知乎文章信息
- nyoj448 寻找最大数
- A cat
- HDU-3440 House Man(差分约束系统)
- 应用程序无法正常启动(0xc000007b)
- nyoj 586 疯牛
- MapReduce基础:HDFS的数据完整性
- Spring中集成Mybatis分页插件PageHelper
- jquery validate实现表单验证 (正则表达式)
- XShell本地上传文件到Ubuntu上及从Ubuntu下载文件到本地
- electron打包web项目之stackedit实战——反面教材
- 如何从Apache官网下载windows版apache服务器
- 逃生 HDU
- 详解Android布局中gravity与layout_gravity属性