博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces 703C Chris and Road
阅读量:6067 次
发布时间:2019-06-20

本文共 1968 字,大约阅读时间需要 6 分钟。

数学,递推。

不知道有没有更加神奇的做法,我是这样想的:

首先,如果多边形完全在$y$轴左侧,那么答案为$\frac{w}{u}$。

剩下的情况就要先判断是否能在车开过之前跑过去,如果跑不过去,要在车慢慢开过$y$轴的时候,一起慢慢跑上去。

那么先来判断是否能在车开过之前跑过去:

如上图所示,如果要在车来车前跑过去,那么等价于要求:对于凸包左侧蓝色链上的每一个点$L[i]$,满足$\frac{

{L[i].y}}{u} ≤ \frac{
{L[i].x}}{v}$,即人要比点先到。如果有一个点不满足,那么就人就无法在车来前跑过去。如果可以的话,答案为$\frac{w}{u}$。

剩下的情况就是凸包右侧黄色链开过$y$轴时,人同时走上去。这种情况的答案,递推一下就能算出来了,如果人走到$(0,R[i].y)$所花的时间为$ans$,那么人走到$(0,R[i+1].y)$的时间$ans$更新为$\max (ans + \frac{

{\left( {R\left[ {i + 1} \right].y-R\left[ i \right].y } \right)}}{u},\frac{
{R[i].x}}{v})$,想一想也能想明白吧~

#pragma comment(linker, "/STACK:1024000000,1024000000")#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long LL;const double pi=acos(-1.0),eps=1e-8;void File(){ freopen("D:\\in.txt","r",stdin); freopen("D:\\out.txt","w",stdout);}const int INF=2000000000;const int maxn=10010;int n,w,v,u,len1,len2;struct X { int x,y; }p[maxn],L[maxn],R[maxn];int main(){ scanf("%d%d%d%d",&n,&w,&v,&u); for(int i=1;i<=n;i++) scanf("%d%d",&p[i].x,&p[i].y); int ymin=INF,ymax=-INF,f,p1,p2; bool flag; for(int i=1;i<=n;i++) ymin=min(ymin,p[i].y), ymax=max(ymax,p[i].y); f=INF; for(int i=1;i<=n;i++) if(p[i].y==ymin&&p[i].x
=1;i--) { L[len1++]=p[i]; if(i==p2) { flag=1; break; } } if(flag==0) for(int i=n;i>=p2;i--) L[len1++]=p[i]; f=-INF; for(int i=1;i<=n;i++) if(p[i].y==ymin&&p[i].x>f) f=p[i].x,p2=i; f=-INF; for(int i=1;i<=n;i++) if(p[i].y==ymax&&p[i].x>f) f=p[i].x,p1=i; flag=0; for(int i=p1;i>=1;i--) { R[len2++]=p[i]; if(i==p2) { flag=1; break; } } if(flag==0) for(int i=n;i>=p2;i--) R[len2++]=p[i]; for(int i=0;i
(LL)L[i].x*(LL)u) { fail=1; break; } int xmax=-INF; for(int i=1;i<=n;i++) xmax=max(xmax,p[i].x); if(xmax<=0) fail=0; if(fail==0) printf("%.6lf\n",1.0*w/u); else { double ans=0; int pre=0; for(int i=0;i

 

转载于:https://www.cnblogs.com/zufezzt/p/5808421.html

你可能感兴趣的文章
Windows Azure 保留已存在的虚拟网络外网IP(云服务)
查看>>
修改字符集
查看>>
HackTheGame 攻略 - 第四关
查看>>
js删除数组元素
查看>>
带空格文件名的处理(find xargs grep ..etc)
查看>>
华为Access、Hybrid和Trunk的区别和设置
查看>>
centos使用docker下安装mysql并配置、nginx
查看>>
关于HTML5的理解
查看>>
需要学的东西
查看>>
Internet Message Access Protocol --- IMAP协议
查看>>
Linux 获取文件夹下的所有文件
查看>>
对 Sea.js 进行配置(一) seajs.config
查看>>
dom4j解析xml文件
查看>>
第六周
查看>>
斯坦福大学公开课机器学习:梯度下降运算的学习率a(gradient descent in practice 2:learning rate alpha)...
查看>>
解释一下 P/NP/NP-Complete/NP-Hard 等问题
查看>>
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>
sql 字符串操作
查看>>
【转】Android布局优化之ViewStub
查看>>