UVa 1616 商队抢劫者(Caravan Robbers)

博客内容讲述了如何解决UVa 1616题目的商队抢劫者问题,即如何将一组线段转换为等长且不相交的子线段,以求得最大长度。博主分享了他们的解决方案,指出数据处理的难点在于精度问题,通过二分搜索策略并使用小数转分数的方法来求解,最终代码通过了测试。
摘要由CSDN通过智能技术生成

题意:
输入n条线段,把每条线段变成元线段的一条子线段,使得改变之后所有线段等长,且不相交。输出最大长度。例如有3条线段[2,6],[1,4],[8,12] 则最优方案变成 [3.5, 6] [1,3.5][8,10.5]
输出 5 / 2

分析:
这道题数据有点坑,我用 1e-9作为数据精度过不了 1e-10才过了。
思想是二分。
还有小数转分数的0.0方法

代码:

#include<bits/stdc++.h>
#define LL long long
#define ms(s) memset(s, 0, sizeof(s))
using namespace std;
const int maxn = 1e5 + 10;
const int m = 1e6 + 5;
const double exp1 = 1e-10;

struct Node {
   
    double l, r;
    friend bool operator < (const Node& n1, const Node& n2) {
   
        return n1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值