UVA 11627(p80)----Slalom
来源:互联网 发布:oracle数据库好学吗 编辑:程序博客网 时间:2024/04/29 04:09
#include<bits/stdc++.h>#define debuusing namespace std;const int maxn=1e6+50;int maxx,w,vh,n,s,ans,tmp;int x[maxn],y[maxn],ski[maxn];int check(int speed){ double l=(double)x[0],r=(double)(x[0]+w); for(int i=1; i<n; i++) { double d=(double)(y[i]-y[i-1])/(double)speed*vh; l-=d;r+=d; l=max(l,(double)x[i]); r=min(r,(double)(x[i]+w)); if(l>r) return 0; } return 1;}void solve(){ int l=0,r=maxx,mid; while(l<r) { mid=l+(r-l+1)/2; if(check(mid)) { tmp=mid; l=mid; } else r=mid-1; }}void output(){ sort(ski,ski+s); for(int i=0; i<s; i++) { if(ski[i]<=tmp) ans=ski[i]; else break; } if(ans!=-1) printf("%d\n",ans); else printf("IMPOSSIBLE\n");}int main(){#ifdef debug freopen("in.in","r",stdin);#endif // debug int t; scanf("%d",&t); while(t--) { ans=-1; tmp=-1; maxx=0; scanf("%d%d%d",&w,&vh,&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",&ski[i]); maxx=max(maxx,ski[i]); } solve(); output(); } return 0;}题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2674
题解:当速度越小时,越易成功穿过。二分速度v,寻找速度最大值,判断是否合法:求出当前可达区间,与下一位置区间求并,若不为空,则可到达下一位置。最后寻找小于等于v的最大速度即可。
0 0
- UVA 11627(p80)----Slalom
- uva 11627 Slalom
- Uva-11627-Slalom
- UVA - 11627 Slalom
- uva 11627 Slalom
- UVA - 11627 Slalom 二分
- UVA - 11627 - Slalom(二分法)
- UVA - 11627 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 (二分+贪心)
- JAVA GC机制
- The Python Challenge
- 常用docker命令,及一些坑
- 用栈解决符号匹配问题
- 安卓开发 获取本机ip地址的一个方法
- UVA 11627(p80)----Slalom
- 第五周项目4:长方柱类
- 幸福指数 (排列组合)水
- android系统编译kernel时出错:file not recognized: File truncated
- iOS Couldn't update the Keychain Item问题
- CodeForces-626C-Block Towers
- [022]Redis使用教程
- gzoi2016酱油记
- 单例模式