poj之旅——3258C++
2016-06-05 11:31
423 查看
二分题最小值最大化的模式:
[l,r)的左端点l为最小可行数,r为最大可能可行数+1,中位数check(mid),true则趋向问题的求大求小,false则反向,最后输出l。
参考程序:
[l,r)的左端点l为最小可行数,r为最大可能可行数+1,中位数check(mid),true则趋向问题的求大求小,false则反向,最后输出l。
参考程序:
#include<cstdio> #include<algorithm> #define maxn 51000 using namespace std; int p[maxn]; int L,n,m; bool Check(int k){ int last=0,cnt=0; for (int i=0;i<n;i++) if (p[i]-last<k)cnt++; else last=p[i]; return cnt<=m; } int main(){ scanf("%d%d%d",&L,&n,&m); for (int i=0;i<n;i++)scanf("%d",&p[i]); p[n++]=L; sort(p,p+n); int l=0,r=L+1; while (l+1<r){ int mid=(l+r)>>1; if (Check(mid))l=mid; else r=mid; } printf("%d",l); return 0; }
相关文章推荐
- 跟我一起学C++之从C到C++(bool类型)
- 完美cvCreateVideoWriter写出AVI文件为空的问题
- C++第7次实验
- 非系统消息的使用方法及SendMessage()和PostMessage()的区别
- C++,笔试面试,使用C++编程,实现万年历
- C/C++,笔试面试,多种方法求100以内的所有素数
- 使用C语言编写程序,求解有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个序列的前20项
- C语言头文件的写作方法和说明
- 通讯录小程序(C/C++)C语言练习小程序
- 笔试,面试,C/C++,判断单链表是否带环?若带环,求环长度,求环入口点(两种方法)
- <笔试><面试>C/C++单链表相关(4)判断两链表是否相交,求交点(链表不带环/可能带环)
- <笔试><面试>C/C++单链表(最综合)最全工程从建立到相关函数实现
- C/C++为什么要短路求值?
- VS2015报错:值不能为null参数名:solutionDirectory(visual studio 2015环境下运行C/C++)
- C语言格式控制符
- C++模板详解
- C语言的字符串(篇章之一)
- MFC如何用模拟发送一个伪消息
- 浅谈C语言中的布尔(bool)类型
- 记录一些小点 [随时更新] [神犇勿进] (1)