CF
来源:互联网 发布:java学生选课系统源码 编辑:程序博客网 时间:2024/05/16 00:38
1.题目描述:
2.题意概述:
一条马路上有若干个人,每个人位于xi上,他们奔跑的速度为vi,问你最短时间使得他们都汇集在某点(不一定是整数点)
3.解题思路:
因为不一定是整数点,所以没必要枚举坐标,直接二分答案就行,这题好像允许和答案有一定的误差范围。对于每次二分的答案judge一下所有的人向左走的最短位置和向右走的最短位置,如果maxl > minr则肯定无解,如果有解的话再在更短的时间内二分。
4.AC代码:
#include <bits/stdc++.h>#define INF 0x3f3f3f3f#define maxn 60066#define N 1111#define eps 1e-6#define pi acos(-1.0)#define e exp(1.0)using namespace std;const int mod = 1e9 + 7;typedef long long ll;typedef unsigned long long ull;struct node{ int x, v;} p[maxn];bool judge(double t, int n){ double l = 0, r = 1e10; for (int i = 0; i < n; i++) { l = max(l, p[i].x - p[i].v * t); r = min(r, p[i].x + p[i].v * t); } if (l > r) return 0; return 1;}int main(){#ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); long _begin_time = clock();#endif int n; while (~scanf("%d", &n)) { for (int i = 0; i < n; i++) scanf("%d", &p[i].x); for (int i = 0; i < n; i++) scanf("%d", &p[i].v); double ans = 0, l = 0, r = 1e9, mid; while (r - l > eps) { mid = (l + r) / 2; if (judge(mid, n)) //如果可以到达则缩短时间 { { r = mid - eps; ans = mid; } else l = mid + eps; } printf("%.10f\n", ans); }#ifndef ONLINE_JUDGE long _end_time = clock(); printf("time = %ld ms.", _end_time - _begin_time);#endif return 0;}
0 0
- CF
- CF
- cf
- cf
- CF
- CF
- CF
- CF
- CF
- CF
- cf
- CF
- cf
- cf
- cf ***
- CF
- CF
- CF
- 在eclipse中进行Struts2项目的配置
- 非对称加密算法ElGamal
- 程序员的开端
- 在成都七中的寒假信息竞赛集训总结
- 在salesforce中的visualforce中使用html的经验(web前端->sfdc)
- CF
- jmeter相关资料
- azkaban定制用户管理(azkaban Custom User Manager)
- PHP 实现页面推送 & APP与浏览器页面实时交互
- CheckBox最多可选两项,多选的提示且被清除
- [ubuntu系列]apt-get update 出现failed to fetch
- 手写jspon实现跨域
- hibernate 开发步骤
- python代码过长的换行