POJ 3258 River Hopscotch
来源:互联网 发布:拼接图片软件台词 编辑:程序博客网 时间:2024/06/07 03:55
题意:起始石头和终止石头之间的距离是l,在起始石头和终止石头之间有n块石头,并且已经给出这n块石头分别到起始石头的距离,去掉最多不超过m块石头使两块石头之间的最小距离最大,输出这个距离
解题思路:最大化最小值二分法,将石头到初始石头的距离存入数组,二分求两块石头之间的最小距离的最大值,判断当前的距离x是否符合条件,如果两块石头之间的距离小于x就去掉右边的石头,最后还要判断一下第n块石头到终止石头的距离
代码:
#include <iostream>#include <algorithm>#include <string>#include <cstring>#include <cstdio>using namespace std;#define INF 0x3f3f3f3fint d[50005];int l,n,m;bool judge(int x){ int del=0,k=0; for(int i=0; i<n; i++) { if(d[i]-k<x)del++; else k=d[i]; } if(l-k<x)del++;//这步很重要,判断第n块石头到终止石头的距离 if(del>m)return false; return true;}int main(){ cin>>l>>n>>m; memset(d,0,sizeof(d)); for(int i=0; i<n; i++) { cin>>d[i]; } sort(d,d+n); int lb=0,ub=INF; while(ub-lb>1) { int mid=(lb+ub)/2; if(judge(mid))lb=mid; else ub=mid; } cout<<lb<<endl; return 0;}
阅读全文
0 0
- poj 3258 River Hopscotch
- poj-3258 River Hopscotch
- poj-3258 River Hopscotch
- poj 3258 River Hopscotch
- poj 3258 River Hopscotch
- POJ 3258 River Hopscotch
- POJ 3258 River Hopscotch
- poj 3258 River Hopscotch
- POJ-3258-River Hopscotch
- POJ 3258 River Hopscotch
- POJ 3258 River Hopscotch
- POJ 3258 River Hopscotch
- POJ 3258 River Hopscotch
- poj 3258-River Hopscotch
- POJ 3258 River Hopscotch
- POJ 3258 River Hopscotch
- POJ 3258--River Hopscotch
- poj 3258 River Hopscotch
- maven-war-plugin插件的warSourceExcludes和packagingExcludes参数的区别
- 找不到mysql.sock,mysql.sock丢失问题解决方法
- 创建标签
- ULUA 笔记
- 操作标签
- POJ 3258 River Hopscotch
- 使用GitHub
- PAT1102 树的翻转
- 数学形态学——腐蚀、膨胀、开、闭、细化
- 自定义Git
- JVM参数设置详解
- TCMalloc : Thread-Caching Malloc高性能的内存分配器(C/C++)
- 忽略特殊文件
- 值得推荐的C/C++框架和库