紫书 习题8-14 UVa 1616(二分+小数化分数+精度)
2024-09-01 08:03:38
参考了https://www.cnblogs.com/dwtfukgv/p/5645446.html
(1)直接二分答案。说实话我没有想到, 一开始以为是贪心, 以某种策略能得到最优解。
但是想了很久没想出来, 后来看了博客发现因为显然答案是单调的, 可以用二分来做。
看到最大, 最小, 可以考虑答案是否单调, 单调考虑用二分
(2)然后是小数化分数, 其实一开始我想模拟分数, 然后发现很麻烦, 之后博客里的方法技巧性很强。
其实这个方法默认了分母是在1到n之间的, 而好像题目并没有给出这个条件。这个其实就是枚举所有
与ans接近的分数, 选最近的。
(3)这道题目的精度太恐怖了, 第一是1e-9, 第二是我为了保险最后ans取得是最后的(l+r)/2。
但是wa, 改成ans=l就过了……
#include<cstdio>
#include<cmath>
#include<queue>
#include<algorithm>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
using namespace std;
const int MAXN = 112345;
const double EPS = 1e-9;
struct node
{
int l, r;
bool operator < (const node& x) const
{
return l < x.l;
}
}a[MAXN];
int n;
bool judge(double key)
{
double start = 0;
REP(i, 0, n)
{
if(start < a[i].l) start = a[i].l;
if(start + key > a[i].r) return false;
start += key;
}
return true;
}
int main()
{
while(~scanf("%d", &n))
{
REP(i, 0, n) scanf("%d%d", &a[i].l, &a[i].r);
sort(a, a + n);
double l = 0, r = 1e6;
while(r - l > EPS)
{
double m = (l + r) / 2.0;
if(judge(m)) l = m;
else r = m;
}
double ans = l;
int ansp = 0, ansq = 1;
REP(q, 1, n + 1)
{
int p = round(ans * q);
if(fabs((double)p / q - ans) < fabs((double)ansp / ansq - ans))
ansp = p, ansq = q;
}
printf("%d/%d\n", ansp, ansq);
}
return 0;
}
最新文章
- Java 清除数组相同元素
- mysql启动失败:不能创建pid文件
- Gate level Simulation(门级仿真)
- mvc+mysql+EF
- javascript获取iframe框架中页面document对象,获取子页面里面的内容,iframe获取父页面的元素,
- ASP.NET学习笔记1—— MVC
- openfire+asmack搭建的安卓即时通讯(一) 15.4.7
- ABAP Enhancement:第二部分
- DP之矩阵连乘问题
- Subset leetcode java
- 安装 SQL Server 2008 R2 的硬件和软件要求(转)
- Cocos2dx 3.0 过渡篇(三十)灰机还是3D好(Sprite3D)
- Oracle免费的便捷Web应用开发框架
- MVC 缓存1
- SQL远程恢复
- STM32驱动TEA5767收音机模块
- babel-polyfill的几种使用方式
- Linux安装JSON-C
- Hackergame 2018的一道题目confused_flxg失败心得体会
- configure: error: cannot guess build type; you must specify one解决方法
热门文章
- Mysql 分库分表方案
- BZOJ 5180 [Baltic2016]Cities(斯坦纳树)
- 论文阅读《ActiveStereoNet:End-to-End Self-Supervised Learning for Active Stereo Systems》
- Python学习————字符串相关操作
- zoj 3471 Most Powerful(状压dp+Tsp问题+连续性问题)
- STM32 USB转串口驱动安装不成功出现黄色感叹号解决方法!
- CSS隐藏overflow默认滚动条同时保留滚动效果
- MyBatis学习总结(18)——MyBatis与Hibernate区别
- UVA 12507 Kingdoms
- dubbo知识点理解