【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

二分长度。
显然长度越长。就越不可能。
二分的时候。可以不用管精度。
直接指定一个二分次数的上限就好。
判断长度是否可行。直接用贪心就好。
->贪心(排序区间,尽量让新的区间右端点靠左一点。以便后面的区间有放的地方。

最后得到小数。

=>暴力枚举分母i是什么。

然后进行类似一个迭代!?的过程。

如果round(ans*i)/i和ans的差的绝对值更小。则更新分母、分子。

【代码】

#include <bits/stdc++.h>
#define ll long long
using namespace std; const int N = 1e5; int n;
pair<double,double> a[N+10]; bool ok(double len){
double now = a[1].first + len;
for (int i = 2;i <= n;i++){
if (a[i].first<now){
if (now+len>a[i].second) return false;
now = now + len;
}else{
//a[i].first>=now
if (a[i].first+len>a[i].second) return false;
now = a[i].first+len;
}
}
return true;
} int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
while (cin >> n){
for (int i = 1;i <= n;i++) cin >> a[i].first>>a[i].second;
sort(a+1,a+1+n);
double l = 1,r = a[1].second-a[1].first,temp = -1;
for (int i = 1;i <= 200;i++){
double mid = (l+r)/2.0;
if (ok(mid)){
temp = mid;
l = mid;
}else r = mid;
}
ll pfenzi = 0,pfenmu = 1;
for (int i = 1;i <= 100000;i++){
ll fenzi = round(i*temp);
if ( abs((double)fenzi/(1.0*i)-temp) <abs((double)pfenzi/(1.0*pfenmu) - temp)){
pfenzi = fenzi;
pfenmu = i;
}
}
cout <<pfenzi<<"/"<<pfenmu<<endl;
}
return 0;
}

【习题 8-14 UVA - 1616】Caravan Robbers的更多相关文章

  1. UVa - 1616 - Caravan Robbers

    二分找到最大长度,最后输出的时候转化成分数,比较有技巧性. AC代码: #include <iostream> #include <cstdio> #include <c ...

  2. UVa 1616 Caravan Robbers (二分+贪心)

    题意:给定 n 个区间,然后把它们变成等长的,并且不相交,问最大长度. 析:首先是二分最大长度,这个地方精度卡的太厉害了,都卡到1e-9了,平时一般的1e-8就行,二分后判断是不是满足不相交,找出最长 ...

  3. UVA 1616 Caravan Robbers 商队抢劫者(二分)

    x越大越难满足条件,二分,每次贪心的选区间判断是否合法.此题精度要求很高需要用long double,结果要输出分数,那么就枚举一下分母,然后求出分子,在判断一下和原来的数的误差. #include& ...

  4. SICP 习题 (1.14)解题总结

    SICP 习题 1.14要求计算出过程count-change的增长阶.count-change是书中1.2.2节讲解的用于计算零钱找换方案的过程. 要解答习题1.14,首先你需要理解count-ch ...

  5. 紫书 习题8-14 UVa 1616(二分+小数化分数+精度)

    参考了https://www.cnblogs.com/dwtfukgv/p/5645446.html (1)直接二分答案.说实话我没有想到, 一开始以为是贪心, 以某种策略能得到最优解. 但是想了很久 ...

  6. 武汉科技大学ACM :1008: 华科版C语言程序设计教程(第二版)习题6.14

    Problem Description 输入一个八进制的字符串,将它转换成等价的十进制字符串,用pringf的%s格式输出. Input 首先输入一个正整数t,表示有t组测试数据(1<= t & ...

  7. Java50道经典习题-程序14 求日期

    题目:输入某年某月某日,判断这一天是这一年的第几天?分析:(1)以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天 (2)特殊情况,闰年2月份的天数是29天,否则是28天 impo ...

  8. SQL表操作习题4 14~25题 缺20题

  9. [C++] 习题 2.14 用队列实现桶排序

    目录 前置技能 队列(已在上篇提到栈的时候顺便提到了,不再赘述) 桶排序 具体实现 由用户输入n个10以内的数,每输入i(0≤i≤9),就把它插入第i号队列中,最后把10个队列中的非空队列,按队列号从 ...

随机推荐

  1. Configure Tomcat 7 to run Python CGI scripts in windows(Win7系统配置tomcat服务器,使用python进行cgi编程)

    Pre-installation requirements1. Java2. Python steps1. Download latest version of Tomcat (Tomcat 7) f ...

  2. springboot框架笔记——springboot提供的自动配置

    Springboot基本配置 spring MVC的定制配置需要我们的配置实现一个WebMvcConfigurer接口,如果实在spring环境下需要使用@EnableWebMVC注解,来开启对spr ...

  3. ifreq、ifconf

    网络相关的ioctl请求的request参数及arg地址必须指向的数据类型如下表所示: 接口 SIOCGIFCONF SIOCSIFADDR SIOCGIFADDR SIOCSIFBRDADDR SI ...

  4. 安装Signavio Web设计器

    在Jbpm3版本号中,这个著名的开源项目并没有基于浏览器的图形化流程设计器,结果导致流程设计一直停留在CS阶段. 比方我之前做过的一个OA项目.项目中採用的就是Jbpm3.因为它不支持在浏览器中的图形 ...

  5. Material Design控件使用学习 TabLayout+SwipeRefreshlayout

    效果: Tablayout有点类似之前接触过的开源ViewPagerIndicator,将其与viewpager绑定,可实现viewpager的导航功能. SwipeRefreshLayout是官方出 ...

  6. 6.控制器(ng-Controller)

    转自:https://www.cnblogs.com/best/tag/Angular/ ngController指令给视图添加一个控制器,控制器之间可以嵌套,内层控制器可以使用外层控制器的对象,但反 ...

  7. ACM的算法分类 2015-04-16 14:25 22人阅读 评论(0) 收藏

    初期:  一.基本算法:        (1)枚举. (poj1753,poj2965)       (2)贪心(poj1328,poj2109,poj2586)       (3)递归和分治法.   ...

  8. Android 数据库框架总结,总有一个适合你!

    一:OrmLite 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完善:4.文档全面.缺点:1.基于反射,效率较低(本人还没有觉得效率低):2.缺少中文翻译文档 jar包 地址:http: ...

  9. java实现折半查找

    package althorgrim;/** * 1.必须采用顺序存储结果 * 2.关键字必须有序 * @author hanrk-2734 * */public class TestBinarySe ...

  10. JS中的onload与jQuery中的ready差别

    jQuery的运行机制(onload与ready的差别) 结论得出前自行測试: 为了測试是否真如所说的那样,所以在页面插入了20000张照片,照片数量少得不出什么结论,所以改用console.log( ...