UVA - 11627 Slalom
来源:互联网 发布:喜马拉雅电台 知乎 编辑:程序博客网 时间:2024/06/10 21:02
题目大意:在一场滑雪比赛中要通过n个门,给出每个门的坐标(xi,yi)。数据给出w(每个门的宽度),v(水平方向上的最大速度,即x轴),以及n。然后是n行门的坐标。在给出m,表示有m双滑雪鞋,每双鞋的速度为s[i]。问说可以通过所有旗门的滑雪板的最大速度。
解题思路:首先现将s[i]排序,然后二分答案。判断只需要更具前后两个旗门的高度差来计算时间,由上一个可达区间推出下一个可达区间,然后加以判断。
#include <cstdio>#include <algorithm>using namespace std;int W, v, N, S;int x[100010], y[100010], s[1000010];bool judge(int Vh) { double l = x[N-1], r = x[N-1] + W; for (int i = N - 2; i >= 0; i--) { double t = 1.0 * (y[i+1] - y[i]) / Vh; l -= t * v; r += t * v; if (x[i] + W < l || x[i] > r) return false; if (l < x[i]) l = x[i]; if (r > x[i] + W) r = x[i] + W; } return true;}void solve() { int L = 0, R = S - 1; while (L < R) { int mid = (L + R + 1) / 2; if (judge(s[mid])) L = mid; else R = mid - 1; } if (judge(s[L])) printf("%d\n", s[L]); else printf("IMPOSSIBLE\n");}int main() { int T; scanf("%d", &T); while (T--) { scanf("%d%d%d", &W, &v, &N); for (int i = 0; i < N; i++) scanf("%d%d", &x[i], &y[i]); scanf("%d", &S); for (int i = 0; i < S; i++) scanf("%d", &s[i]); sort(s, s + S); solve(); } return 0;}
0 0
- uva 11627 Slalom
- Uva-11627-Slalom
- UVA - 11627 Slalom
- uva 11627 Slalom
- UVA - 11627 Slalom 二分
- UVA - 11627 - Slalom(二分法)
- UVA - 11627 Slalom
- UVA 11627(p80)----Slalom
- UVA 11627 Slalom(二分)
- UVA 11627 - Slalom(二分)
- UVA 11627 Slalom 二分 模拟
- UVa 11627 Slalom (二分)
- uva 11627 - Slalom(贪心+二分)
- (intermediate) UVA 二分 11627 - Slalom
- UVa 11627 Slalom 解题报告(二分)
- 障碍滑雪比赛(Slalom,UVa 11627)
- UVA 11627 Slalom(二分极小值极大化)
- 11627 - Slalom (二分+贪心)
- WebService大讲堂之Axis2(7):将Spring的装配JavaBean发布成WebService
- Qt之自定义菜单(按钮菜单)
- jsonKit第三方包错误解决方案
- springmvc获取json Failed to load resource: the server responded with a status of 406 (Not Acceptable)
- MQ7.5以后的权限问题解决
- UVA - 11627 Slalom
- HDU-2808
- zynq虐我千百遍——第2篇 Linaro之devicetree
- String类(传智播客java基础毕老师的源码)
- 使用kaptcha插件生成加法计算验证码
- 【Python 学习手册笔记】列表与字典
- 从layout到extent的演变史(二)
- APACHE服务器出现No input file specified.的完美解决方案
- HDU_1005 Number Sequence(math)