UVa (二分) 11627 Slalom
2024-09-24 22:11:18
题意:
有宽度相同的水平的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 ;
}
代码君
最新文章
- .NET跨平台之旅:增加文件日志功能遇到的挫折
- 通过SSH连接linux服务器
- [issue] [iOS 10] 升级后无法真机测试 Could not find Developer Disk Image
- 解决oracle服务器重启之后连接报错的问题
- json格式
- C#中扩展StringBuilder支持链式方法
- .net core 使用Autofac依赖注入
- Android 利用Service BroadcastReceiver实现小例子
- HDU1247 - Hat&rsquo;s Words(Trie树)
- jquery ajax验证用户名是否存在(后台spring mvc)
- 【夯实shell基础】shell基础面面观
- Linux 各种软件的安装 - svn
- 2018.4.23 git常用操作命令收集(转)
- Android-多进程初识
- WCF 的 WebGet 方式
- Java JNI初探
- 2014年百度之星程序设计大赛 - 资格赛 1001 Energy Conversion
- 在phpWeChat中生成公众号 jssdk 各个参数(PHP)
- 论文笔记:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
- Hibernate的懒加载session丢失解决方法
热门文章
- JS数据类型的理解(猜测)
- Sqli-labs less 41
- Sublime Text 编辑器
- 运行时修改TimerTask的执行周期
- java与.net之间xml传递,xml最前面多了个?
- Android中两种设置全屏的方法
- ios下划线变量:为什么变量前要加下划线才有用?
- hdu 4155 The Game of 31 博弈论
- dom对象详解--document对象(三)
- 关于模态/非模态对话框不响应菜单的UPDATE_COMMAND_UI消息(对对WM_INITMENUPOPUP消息的处理)