当前位置: 首页 > news >正文

POJ2456(最大化最小值)解题报告

原题链接:POJ2456

题意简述:求在1~N中选C个位置,每俩个位置之间距离最小的值最大化。

思路:让距离最小的那个距离最大。可以看出来答案具有单调性,那我们就可以转求解为判定,用二分搜索来求结果。具体做法就是假定一个答案,再不断缩小答案范围,最终得到解。

注意点:while循环内的判定条件需要仔细考虑,稍有改变就会有截然不同的结论。

代码示例:

#include<cstdio>
#include<algorithm>
using namespace std;

const int maxn = 1e5+10;
int stall[maxn];
int n,c;
bool C(int size){
	int cnt = 1;
	int last = 0;
	for(int i = 1;i < n;i++){
		if(stall[i] - stall[last] >= size) cnt++,last = i;
	}
	return cnt >= c;
}
int main(){
	scanf("%d%d",&n,&c);
	for(int i = 0;i < n;i++)
		scanf("%d",stall+i);
	sort(stall,stall+n);
	long long l = 0,r = 3e9;
	while(l < r){
		int mid = (l + r)/2;
		if(C(mid)) l = mid+1;
		else r = mid;
	}	
	printf("%lld\n",l-1);
	return 0;
}

至于为什么最后答案是l-1呢?假设到了最后一个成立的答案mid,此时l = mid + 1 ,那么下一个必定不成立并l = r退出,此时答案其实为l - 1,即上述的mid。

转载于:https://www.cnblogs.com/long98/p/10352156.html

相关文章:

  • SVN常用命令
  • Python学习之==生成器
  • MQTT学习笔记——MQTT协议体验 Mosquitto安装和使用
  • 遇到的Cocos2dx问题
  • Hello world开始复习
  • [ffmpeg] 定制滤波器
  • IOS的处理touch事件处理(按照手指的移动移动一个圆,开发环境用的ios7,storyboard)...
  • DataTable转实体类
  • [Java][Android][Process] ProcessBuilder与Runtime差别
  • NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成...
  • 服务器虚拟化的十大谎言
  • cacti找不到网卡的解决方法
  • Java并发3:线程
  • 技术部门怎么年终考核最合理?
  • python机器学习实战(二)
  • conda常用的命令
  • create-react-app项目添加less配置
  • express + mock 让前后台并行开发
  • HTTP 简介
  • isset在php5.6-和php7.0+的一些差异
  • javascript面向对象之创建对象
  • JavaScript实现分页效果
  • Markdown 语法简单说明
  • node.js
  • springboot_database项目介绍
  • 大主子表关联的性能优化方法
  • 翻译--Thinking in React
  • 搞机器学习要哪些技能
  • 跨域
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 移动端 h5开发相关内容总结(三)
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 如何在招聘中考核.NET架构师
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​低代码平台的核心价值与优势
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • $jQuery 重写Alert样式方法
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (2)nginx 安装、启停
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Java数据结构)ArrayList
  • (ZT)一个美国文科博士的YardLife
  • (搬运以学习)flask 上下文的实现
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (十)c52学习之旅-定时器实验
  • (一)基于IDEA的JAVA基础1
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)Linux下编译安装log4cxx
  • *p++,*(p++),*++p,(*p)++区别?
  • .net core 连接数据库,通过数据库生成Modell
  • .net core控制台应用程序初识
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递