UVA 10385 - Duathlon

题目链接

题意:一些运动员,參加铁人两项,跑步r千米,骑车k千米,如今知道每一个人的跑步和骑车速度,问是否能设置一个r和k,保持r + k = t,使得第n个人会取胜,假设能够求出时间和r,k

思路:三分法,把每一个人列出一个带r的方程求时间,其它人减去最后一个人就是相差的时间,发现这些方程都是一元一次线性方程,而问题相当于求每一个x轴上,值最小的那个,这些线画出来,会发现变成一个上凸函数,是单峰函数,能够用三分法求解

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int N = 25; double t, v1[N], v2[N];
int n; double cal(double r) {
double k = t - r;
double ans = 1e100;
double t1 = r / v1[n - 1] + k / v2[n - 1];
for (int i = 0; i < n - 1; i++) {
double t2 = r / v1[i] + k / v2[i];
ans = min(ans, t2 - t1);
}
return ans;
} int main() {
while (~scanf("%lf", &t)) {
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%lf%lf", &v1[i], &v2[i]);
double l = 0, r = t;
for (int i = 0; i < 100; i++) {
double midl = (l * 2 + r) / 3;
double midr = (l + r * 2) / 3;
if (cal(midl) > cal(midr)) r = midr;
else l = midl;
}
double ti = cal(l);
if (cal(l) < 0.00) printf("The cheater cannot win.\n");
else printf("The cheater can win by %.0lf seconds with r = %.2lfkm and k = %.2lfkm.\n", ti * 3600, l, t - l);
}
return 0;
}

UVA 10385 - Duathlon(三分法)的更多相关文章

  1. 【三分搜索算法】UVa 10385 - Duathlon

    题目链接 题意:“铁人三项”比赛中,需要选手在t km的路程里进行马拉松和骑自行车项目.现有n名选手,每位选手具有不同的跑步速度和骑车速度.其中第n位选手贿赂了裁判员,裁判员保证第n名选手一定会取得冠 ...

  2. UVA 10385 Duathlon

    Problem HDuathlonInput: standard inputOutput: standard outputTime Limit: 15 seconds A duathlon is a ...

  3. 铁人系列 (1) uva 10385

    uva  10385 列出n-1个一元方程,对应成单峰函数,所以用三分求解即可. #include <cstdio> #include <cstring> #include & ...

  4. UVA 1476 - Error Curves(三分法)

    UVA 1476 1476 - Error Curves 题目链接 题意:给几条下凹二次函数曲线.然后问[0,1000]全部位置中,每一个位置的值为曲线中最大值的值,问全部位置的最小值是多少 思路:三 ...

  5. hdu 4071& poj 3873 & zoj 3386 & uva 12197 Trick or Treat 三分法

    思路: 看到这个题目就发现所需最短时间也就是房子和相遇点的最远距离具有凹凸性,很容易就想到了三分法枚举. 找出所有房子的X坐标的最小最大值作为上下界. 代码如下: #include<stdio. ...

  6. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  7. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  8. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

  9. UVA&&POJ离散概率与数学期望入门练习[4]

    POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...

随机推荐

  1. WEB-CSS实现单行(多行)文本溢出显示省略号

    //单行文本溢出部分隐藏显示省略号...overflow: hidden; text-overflow:ellipsis; white-space: nowrap; /** n 行文本溢出部分隐藏显示 ...

  2. PHP开发心得一

    1,php获得服务器时间 $time= date('Y-m-d H:i'); echo $time; 一般写法如上,但发现打印出来的时间小时数总数不对,和机器的时间差几个小时.查资料发现,要设定时区. ...

  3. 5步上手体验kettle快捷调度方式

    https://my.oschina.net/u/944575/blog/1557410 kettle调度监控最佳实践 https://my.oschina.net/u/1026947/blog/15 ...

  4. Python之字符串的特性及常用方法

    字符串的特性 索引: (索引是从0开始) s='hello'print(s[0])print(s[4])print(s[-1]) #拿出最后一个字符 hoo12345678截取s[start:stop ...

  5. CAD控件:网上打开dwg文件时,对dwg文件路径加密的功能

    梦想CAD控件2015.03.12最新更新  1. 增加控件状态栏文字,自定义功能,        C++接口为 :   CStatusBarInformationReactor::CreatePro ...

  6. CPU 的寻址方式

    来源https://baike.baidu.com/item/%E5%AF%BB%E5%9D%80%E6%96%B9%E5%BC%8F/3210621?fr=aladdin 寻址方式就是处理器根据指令 ...

  7. 09Microsoft SQL Server 表数据插入,更新,删除

    Microsoft SQL Server 表数据插入,更新,删除 向表中插入数据 INSERT INTO insert into tb1 values(0004,'张凤凤') insert into ...

  8. airfoil polar data during post stall stages (high AOA)

    airfoil polar data during post stall stages (high AOA) Table of Contents 1. airfoil polar during pos ...

  9. 嵌入式LinuxC语言程序设计基础教程

    第1章 嵌入式LinxuC语言开发工具 第2章 数据 第3章 数据的输入输出 第4章 运算符和表达式 第5章 程序结构和控制语句 第6章 数组 第7章 指针 第8章 函数 第9章 用户自定义数据类型 ...

  10. ebay 店铺状态

    OrderStatusCodeType @XmlEnumValue("Active") @XmlEnumValue("Inactive") @XmlEnumVa ...