HDU4004 二分答案
第一道二分答案。。。今天看了大牛的博客,突然发现有个叫“二分枚举答案”的方法好像很牛,于是便搜了些资料。。发现并不是很难,可能是我了解的只是冰山一脚罢了。。。加油ACMer!!!!
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define max 500000
int d[max],ans;
int L,n,m;
bool OK(int stp){ //判断stp是否为可行解
int cur=0,curi=0,cnt=0;
while(cur<L){
int i,j;
for(i=curi+1;i<=n;i++){
if(d[i]<=stp+cur){
j=i;
}
else{
break;
}
}
if(i==curi+1){
return false;
}
curi=j;
cur=d[curi];
cnt++;
}
if(cnt>m){
return false;
}
return true;
}
void solve(int s,int e){ //二分求解
int mid;
while(s<=e){
mid=(s+e)>>1;
if(OK(mid)){
if(ans>mid){ //如果mid是可行解,则与答案比较
ans=mid;
}
e=mid-1;
}
else{
s=mid+1;
}
}
}
int main(){
while(~scanf("%d%d%d",&L,&n,&m)){
for(int i=1;i<=n;i++){
scanf("%d",&d[i]);
}
d[n+1]=L; //最后一块石头为东岸
n++;
sort(d+1,d+n+1);
ans=L;
solve(d[1],L);
printf("%d\n",ans);
}
}
最新文章
- Javascript面向对象编程:构造函数的继承
- linux 程序运行监控
- Openjudge-计算概论(A)-年龄与疾病
- c# mvc如何生成excel
- Java语言
- pytorch之张量的理解
- MySQL 大表优化方案(长文)
- 2D过渡模块的其他属性
- Spring Boot 集成 Swagger2 与配置 OAuth2.0 授权
- HashMap底层实现原理(JDK1.8)源码分析
- SQL Server Profiler 怎么创建trace来收集sql log(.trc文件)
- 2018面向对象程序设计(Java)第1周学习指导及要求
- python的错误类型和异常处理
- 移动端HTML5实现文件上传
- Linux 用户篇——用户管理命令之id、whoami、su、chage
- spring切面拦截实现
- java中prepareStatement与createStatement的区别
- aliyun服务器ubuntu系统+MySQL+SqlDeveloper
- 【BZOJ 2118】 2118: 墨墨的等式 (最短路)
- django 之 常用命令
热门文章
- iserver中的服务数据迁移
- 实验室系统tomcat 6 java.lang.OutOfMemoryError: Java heap space
- error LNK1104: 无法打开文件“C:\Users\Administrator\Desktop\....\\xxxx.exe”
- joda 获取每个月第一天第一秒和最后一天最后一秒
- Python3简介
- <;爬虫>;黑板爬虫闯关02
- POJ 3348 /// 凸包+多边形面积
- Lost&#39;s revenge HDU - 3341 AC自动机+DP(需要学会如何优雅的压缩状态)
- scrapy运行的整个流程
- CSRF spring mvc 跨站请求伪造防御(转)