UVa (二分) 11627 Slalom
题意:
有宽度相同的水平的n个旗门,水平(纵坐标严格递增)滑行的最大速度为Vh(水平速度可以任意调节)。然后还有S双滑雪板,每双滑雪板的垂直速度一定。
然后求能通过的滑板鞋的最大速度。
分析:
显然,滑雪板的速度越小越容易通过所有的旗门。然后二分找出这个能通过旗门的最大值,最后在滑雪板里面找出这个范围的最大值。
如何判断某个速度可以通过所有的旗门:
第一个旗门处起点可以是任意的,到达第二个旗门的垂直高度时有一个范围,然后和第二个旗门的宽度的范围求交集。如果为∅,则不能通过。否则,继续求到达下一个高度的范围,再和第三个旗门的范围求交集。
在敲代码的过程中,judge函数WA掉了,后来看的别人的写法过的。浮点运算尽是坑啊,Orz
//#define LOCAL
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int maxn1 = + ;
const int maxn2 = + ;
int w, vx, n;
int x[maxn1], y[maxn1], s[maxn2]; bool judge(int vy)
{
int i,j;
double x1,x2;
x1=x[];
x2=x[] + w;
for(i = ; i < n; i++)
{
double d = vx*1.0*(y[i] - y[i-]) / vy;
x1 -= d,x2 += d;
x1 = max(x1, x[i]*1.0);
x2 = min(x2, (x[i] + w)*1.0);
if(x1 - x2>1e-)
{
return false;
}
}
return true;
} int main(void)
{
#ifdef LOCAL
freopen("11627in.txt", "r", stdin);
#endif int T, m, i;
scanf("%d", &T);
while(T--)
{
scanf("%d%d%d", &w, &vx, &n);
for(int i = ; i < n; ++i)
scanf("%d%d", &x[i], &y[i]); int L = , R = maxn2;
while(L < R)
{
int mid = L + (R - L + ) / ;
if(judge(mid)) L = mid;
else R = mid - ;
} int ans = ;
scanf("%d", &m);
for(i = ; i < m; ++i)
{
int x;
scanf("%d", &x);
if(x <= L)
ans = max(ans, x);
}
if(ans)
printf("%d\n", ans);
else
puts("IMPOSSIBLE");
}
return ;
}
代码君
UVa (二分) 11627 Slalom的更多相关文章
- UVa 11627 - Slalom 二分. oj错误题目 难度: 0
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- UVA 11627 Slalom(二分)
二分,判断的时候,一个点一个点的考虑肯定是不行啦,考虑的单位是一个区间, 每次左端点尽量向左边移动,右端点尽量向右,得到下次可以达到的范围,检查一下和下一个区间有没有交集. #include<b ...
- UVa 714 Copying Books(二分)
题目链接: 传送门 Copying Books Time Limit: 3000MS Memory Limit: 32768 KB Description Before the inventi ...
- UVA 10816 + HDU 1839 Dijstra + 二分 (待研究)
UVA 题意:两个绿洲之间是沙漠,沙漠的温度不同,告诉起点,终点,求使得从起点到终点的最高温度最小的路径,如果有多条,输出长度最短的路径: 思路:用最小费用(最短路径)最大流(最小温度)也能搞吧,但因 ...
- 10年省赛-Greatest Number (二分+暴力) + 12年省赛-Pick apples(DP) + UVA 12325(暴力-2次枚举)
题意:给你n个数,在里面取4个数,可以重复取数,使和不超过M,求能得到的最大的数是多少: 思路:比赛时,和之前的一个题目很像,一直以为是体积为4(最多选择四次)的完全背包,结果并不是,两两求和,然后二 ...
- uva 1422 - Processor(二分+优先队列)
题目链接:uva 1422 - Processor 题目大意:有一个机器要处理一些问题,给出这些问题可以开始的时间和必须完成的时间,以及任务的工作量,问说机器必须以最少每秒多少得工作量才能完成这些任务 ...
- UVA 10668 - Expanding Rods(数学+二分)
UVA 10668 - Expanding Rods 题目链接 题意:给定一个铁棒,如图中加热会变成一段圆弧,长度为L′=(1+nc)l,问这时和原来位置的高度之差 思路:画一下图能够非常easy推出 ...
- UVA 10341 Solve It 解方程 二分查找+精度
题意:给出一个式子以及里面的常量,求出范围为[0,1]的解,精度要求为小数点后4为. 二分暴力查找即可. e^(-n)可以用math.h里面的exp(-n)表示. 代码:(uva该题我老是出现Subm ...
- uva 1335 - Beijing Guards(二分)
题目链接:uva 1335 - Beijing Guards 题目大意:有n个人为成一个圈,其中第i个人想要r[i]种不同的礼物,相邻的两个人可以聊天,炫耀自己的礼物.如果两个相邻的人拥有同一种礼物, ...
随机推荐
- BZOJ2435: [Noi2011]道路修建
这种水题真是……没一次AC都不好意思见人啊 P.S. LINUX无限栈真是爽炸了… 我爱递归 /**************************************************** ...
- POJ 1305 Fermat vs. Pythagoras (毕达哥拉斯三元组)
设不定方程:x^2+y^2=z^2若正整数三元组(x,y,z)满足上述方程,则称为毕达哥拉斯三元组.若gcd(x,y,z)=1,则称为本原的毕达哥拉斯三元组. 定理:正整数x,y,z构成一个本原的毕达 ...
- 借助flexpaper实现word在线预览和打印
为了实现word能够在web上尽量以原始的排版样式展现出来,选择基于activex控件的方式太过于依赖某种浏览器,并且存在可能需要花费金钱购买相应的控件产品:于是借助flexpaper这种flash展 ...
- linux下tigervnc-servere服务的安装与使用
关于tigervnc-servere的安装,可以直接使用本地yum源进行安装. [root@ ~]# yum install tigervnc-server -y 其中tigervnc的主要配置文件位 ...
- 15条规则解析JavaScript对象布局(__proto__、prototype、constructor)
大家都说JavaScript的属性多,记不过来,各种结构复杂不易了解.确实JS是一门入门快提高难的语言,但是也有其他办法可以辅助记忆.下面就来讨论一下JS的一大难点-对象布局,究竟设计JS这门语言的人 ...
- http://my.oschina.net/u/719192/blog/506062?p={{page}}
http://my.oschina.net/u/719192/blog/506062?p={{page}}
- activity 的四种启动方式
Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standar ...
- Eclipse项目的导入跟导出
1.导入项目 当下载了包含Eclipse 项目的源代码文件后,我们可以把它导入到当前的Eclipse 工作区然后编辑和查看.点击菜单File > Import,然后在弹出的Import 对话框中 ...
- Spring框架学习之第5节
request session global-session 三个在web开发中才有意义 如果配置成prototype有点类似于request 如果配置成singleton有点类似于web开发中的gl ...
- [Error]configure: error: Package requirements (fuse >= 2.3 glib-2.0 gthread-2.0) were not met:
No package 'fuse' found #sshfs是基于fuse模块的所以要安装fuse No package 'glib-2.0' found No packag ...