UVA 1616 - Caravan Robbers

UVa 1616 商队抢劫者(Caravan Robbers) 题意: 输入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<bi... 阅读详情

二分找最大区间长,然后暴力搜出最优分数

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
#include <cmath>
using namespace std;
const int maxn = 100000+10;
const double INF = 1000000.0;
const double eps = 1e-10;
int n, T;
pair<int, int> pai[maxn];

int main()
{
    while(scanf("%d", &n) != EOF) {
        for(int i = 0; i < n; ++i)
            scanf("%d%d", &pai[i].first, &pai[i].second);
        sort(pai, pai+n);
        double l = 0, r = INF;
        double ans = 0.0;
        while(l + eps <= r) {
            double mid = (l + r) / 2, v = 0;
            bool is = true;
            for(int i = 0; i < n && is; ++i) {
                if(v < pai[i].first) v = pai[i].first;
                if(v + mid > pai[i].second) is = false;
                v += mid;
            }
            if(is) {
                l = mid;
                ans = max(ans, mid);
            } else r = mid;
        }
        int rp = 0, rq = 1;
        for (int p, q = 1; q <= n; q++) {
            p = round(ans * q);
            if (fabs((double)p / q - ans) < fabs((double)rp / rq - ans)) {
                rp = p;
                rq = q;
            }
        }
        printf("%d/%d\n", rp, rq);
    }
    return 0;
}


N32G003学习——第九章 第三节1 串口 发送 经过第九章前2节的学习,基础打下之后,开始敲代码。 阅读详情

相关推荐

天龙八部源码深度解析:从宠物系统到副本机制(C++游戏开发实战)

本文深度解析《天龙八部》源码架构,重点剖析宠物系统状态机实现与副本动态加载机制等核心模块。通过C++代码示例展示宠物AI状态迁移逻辑和副本场景管理技术,为现代游戏开发提供兼容性改造方案与设计启示。适合游戏开发者学习经典MMORPG的工程化实现路径。

weixin_29011239的博客 387

Uva 1616 Caravan Robbers (商队抢劫者)

题意:给定 n 个区间,然后把它们变成等长的,并且不相交,问最大长度。 网上思路: 暴力二分枚举最大长度,判断是否可行. 我想的是贪心. now 表示当前已分配长度,s表示连续的一块的起始位置,cnt表示起始区间的下标,minn表示尝试的最大长度 到了第i个区间 第一种情况: now&lt;i.l , 一定可以放下,且作为新的连续区间的开始 令s=i.l now=i.l+minn 第二种: n...

weixin_43913867的博客 228

关于LIO-SAM编译时出现错误 /usr/bin/ld: 找不到 -lBoost::timer

关于LIO-SAM编译时出现错误: 下载LIO-SAM代码 进入LIO-SAM文件夹,通过以下代码编译: mkdir build cd build cmake .. make 报错: /usr/bin/ld: 找不到 -lBoost::timer collect2: error: ld returned 1 exit status CMakeFiles/lio_sam_imuPreintegration.dir/build.make:759: recipe for target 'devel/lib/li

wwtx的博客 3648

UVA 1616 (二分求最大值+卡精度+小数转分数枚举转换技巧)

emmmmm刷紫书衷心奉劝一句,还是不要光看lrj给的紫书的题意,这个题意很容易就会误导人,这个题光看lrj的题意把题给想复杂了,,其实就是一个二分最大值的题。 题意:给定N条线段,线段之间可能会有部分intersection,现要求将线段变成其子线段,要求所有子线段不能有重叠部分,求最短子线段的maxlength。 注意:原线段相交的情况只有两条线段部分相交这一种情况,莫想的太复杂。 题解:小数...

白衣少年郎 471

保姆级教程:用R语言自动化处理FAERS季度数据(从文件合并到删除废弃Case)

本文提供了一份详细的R语言教程,指导如何自动化处理FAERS季度数据,包括文件合并和删除废弃Case。通过使用tidyverse、fs等R包,构建健壮的自动化流程,特别适合药物安全监测领域的数据分析师。教程涵盖环境准备、智能合并多季度数据、精准删除废弃Case等关键步骤,并提供了错误处理与日志记录的实用技巧。

weixin_42701915的博客 127

CentOS 9 Stream 上安装 MySQL 8.0+

根据提示进行设置,包括设置新的 root 密码、禁用远程 root 登录等。MySQL 在首次安装时会生成一个临时密码。这样就完成了 MySQL 8.0.37 的安装。这将安装最新的 MySQL 8.0 版本。

小强不是坑 1679

UVA 1616 [二分+小数转分数输出]

UVA 1616 [二分+小数转分数输出] 题目链接 题意:保证线段之间不包含。 思路:如果这题是输出小数,就是一个很明显的二分!!!难道要直接二分分数?很显然不合理。 二分之后,小数转分数?(无限不循环小数你也转不过去啊) 仔细观察之后会发现一件事,我们总是拿相交的线段对分母才有贡献,因为一个独立线段,直接就是mid/1,其他的就是mid/密集处,那么分母最大就是n。 于是我们很容易用枚举分母的方法AC了这道题!!!注意精度设小一点。 #include<bits/stdc++.h> usin

qq_43653111的博客 478

开关电源EMC整改案例-辐射骚扰

2.4.1 获得原始数据。同样的分析可以应用在差模电流的情况, 唯一不同的是, 两根导线的磁场分布是相反的, 磁 场互相抵消, 由于导线中的电流大小相等, 产生的磁场 H 大小相同, 在互相靠近的情况下, 在磁 环内的两个感应磁场大小相同、方向相反, 因此合成之后的感应磁场 B 几乎为 0,对任意一根导 线而言,相当于是一段“无感导线”,对差模电流不会产生任何抑制作用。众所周知, 共模电感的匝数越多, 感量越大, 按道 理来说对共模干扰电流的抑制也会越强烈,对抗辐射 也越有利,然而事实真的如此吗?

经营范围: CTA、SRRC、CCC、移动、电信、联通入库 3500

UVA1616 Caravan Robbers

UVA1616 Caravan Robbers 题目链接 二分+小数转分数 题意:给定n个区间,把它们变成等长的不想交的区间,求区间的最大长度。 注意本题精度要求较高,注意浮点数的比较方式。 思路 1.二分 通过对题目的分析,我们不难发现,所有小于最大长度的数都满足不相交,所有大于最大长度的数都会相交,满足单调性,可以通过二分来求解最大长度。 通过二分来求区间的最大长度,首先选定左端点l=0,右端点r为n各区间中最靠右的点,然后求mid=(r+l)/2,判断此时的mid是否满足各区间不想交,若不满足,则mi

polarday的博客 269

抖音直播小风车跳转企业微信全攻略:企业号申请+落地页配置详解

本文详细解析了抖音直播小风车跳转企业微信的全流程,包括企业号申请、小风车配置和落地页优化。通过实战指南,帮助企业高效实现私域流量沉淀,提升直播转化率,特别适合电商和营销从业者参考。

weixin_29289821的博客 614

Ansys Lumerical FDTD硬件配置避坑指南:从RTX 4090到A100的GPU选择实战

本文针对Ansys Lumerical FDTD仿真计算,深入分析了从消费级RTX 4090到专业级A100的GPU硬件配置选择。文章指出,选择的关键在于显存容量能否容纳仿真模型,并对比了二者在显存、双精度算力及多卡扩展性上的核心差异,为不同预算和仿真规模的用户提供了实战避坑指南与配置建议。

weixin_29196891的博客 273

(解题报告) Uva 1616 Caravan Robbers (商队抢劫者)(上凸包+队列+结构体)

去网上搜了这道题,都是暴力二分然后把小数还原为分数。虽然可以这么做但是不太像正解。。。 接下来的方法没有用到小数化为分数,而是把分数作为结构体应用。 在朴素的基础上加了斜率优化, 使得本解法的速度在UVA上排名第一。(如果加读优的话。。)

Lighting_的博客 1230

H3LIS200DL三轴加速度传感器原理图设计,已量产(加速度传感器)

在最近的工业振动监测项目里,我们选了 ST 的 H3LIS200DL 做核心传感器 —— 这颗料的特点太契合场景了:±100g/200g 的大量程刚好覆盖设备冲击与振动的测量需求,10μA 的超低功耗能适配电池供电的边缘节点,0.5Hz 到 1kHz 的输出速率也足够抓准动态信号。下面结合实际画的原理图,拆解下这个硬件电路的设计思路。

不脱发的程序猿 338

UVA 1616 Caravan Robbers 【二分+贪心+枚举分母】

题目链接 题意 给n个互不相包含的区间,求出一个长度的最大值,使得可以在每个区间中选出这样一个长度的子区间,这些子区间互不相交。结果用分数表示 分析 先考虑如果给定了区间长度能不能选出这样的区间。因为题中说了区间互不包含,所以可以直接把所有区间先按左端点排序再按右端点排序,每个区间都尽量取靠近左端点的子区间。(如果没有说区间不相互包含的话,就要维护优先队列...

babao9492的博客 270

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

UVa 1616 Caravan Robbers

本文研究了劫匪团伙区间分配问题,要求在不重叠条件下最大化子区间长度。提出了两种解法:方法一采用整数精确比较,通过二分搜索和贪心分配避免精度问题;方法二使用浮点数二分搜索简化实现。实验表明,虽然方法一理论严谨,但方法二的浮点数方案在实际评测中更有效。两种方法均基于二分搜索和贪心策略,为类似区间优化问题提供了参考方案。

寂静山林 378

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

UVa 1616 Caravan Robbers (二分)

题目链接:https://vjudge.net/problem/UVA-1616 大意:输入n个区间,把它们分成等长的、互不相交的子区间,求子区间的最大长度。 思路:二分答案,再小数化分数即可。 #include #include #include #include #include #include using namespace std; const int maxn = 1e6

Interstellar_的博客 557

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

UVa 1616 - Caravan Robbers

链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4491 题意: 输入n条线段,把每条线段变成原线段的一条子线段,使得改变之后所有线段等长且不相交(端点可以重合)。输出最大长度(用分数表示)。 分析: ...

weixin_30830327的博客 195

UVA1616-Caravan Robbers(二分)

Problem UVA1616-Caravan Robbers Accept: 96 Submit:946Time Limit: 3000 mSec Problem Description Long long ago in a far far away land there were two great cities and The Great Caravan Road betwe...

weixin_30755709的博客 175

UVa - 1616 - Caravan Robbers

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

yofer张耀琦的专栏 1169

Caravan Robbers UVA - 1616

题目传送门题意:输入n条线段,把每一条线段的变成原线段的一条子线段,使得改变之后的线段等长且不相交(端点可以重合)。输入最大的长度。思路:思路很简单,先排序然后二分就可以了,这个题难的是在于如何将一个小数转换为分数,一开始自己写的可能精度有些问题后来看了一下别人的思想差不多。#include <algorithm> #include <cmath> #include <cstdio> #includ

且听风吟 410

UVA - 1616 Caravan Robbers 二分+暴力转换

题目大意:给出n条线段,把每条线段变成原来线段的一条子线段,使得改变后的所有线段等长且不相交,输出最大长度解题思路:这题要用long double确保精度,精度要求很高,接下来就是将这个long double的数转化为两个整数相除的结果了,有两种方法,学习到了#include<cstdio> #include<algorithm> #include<cmath> using namespace st

静静地码 1330

UVA1616-Caravan Robbers(枚举)

Problem UVA1616-Caravan Robbers Accept: 160 Submit:1156Time Limit: 3000 mSec Problem Description OnceuponatimetherewasagreedyKing who ordered his chief Architect to build a field for royal cri...

weixin_30496431的博客 123

UVA 1616 Caravan Robbers(二分+贪心)

题意给定n个区间的左右端点l,r,找出最大区间不想交长度。n < 1e5 , l <= r < 1e6;分析感觉是用二分,一直纠结如何在二分中实现分数的产生。贪心的策略就是尽量分割出来的区间靠向左,为后面的留出更多的空间。 看了看 大神的,原来可以先二分出小数,再将小数转化为分数。。。 不过为毛 分母的范围是 1~n,还是不太懂啊 (懊恼.jpg)代码#include <bits/stdc++.

ACMer的博客 624

UVA 1616 Caravan Robbers (暴力 + 二分)

思路: 二分法 + 暴力 由于每个区间长度相同,所以对单位长度的区间必然最多被分为n份。 这也就使得暴力枚举分母成为可能。 #include #include #include #include using namespace std; const int maxn = 1e5 + 5; const double inf = 1e6 + 5; typedef long long

%%% 351

【习题 8-14 UVA - 1616】Caravan Robbers

【链接】 我是链接,点我呀:) 【题意】 在这里输入题意 【题解】 二分长度。 显然长度越长。就越不可能。 二分的时候。可以不用管精度。 直接指定一个二分次数的上限就好。 判断长度是否可行。直接用贪心就好。 ->贪心(排序区间,尽量让新的区间右端点靠左一点。以便后面的区间有放的地方。 最后得到小数。 =>暴力枚举分母i是什么。 然后进行类似一个迭代!?的过程。...

139
上一篇: UVA 1153 - Keep the Customer Satisfied
下一篇: 二进制求子集
THE___BEST
博客等级 码龄12年 10粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值