博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 832C - Strange Radiation
阅读量:5808 次
发布时间:2019-06-18

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

思路:二分最短时间。

代码:

#include
using namespace std;#define ll long long#define pb push_back#define mp make_pair #define pi acos(-1.0)#define pii pair
#define pil pair
#define mem(a,b) mamset(a,b,sizeof(a))const int MOD=1e9+7;const int INF=0x3f3f3f3f;const int N=1e5+5;const double eps=1e-9;int n;double s;struct people{ double x,v,t;}a[N];bool check(double t){ bool flag1=false,flag2=false; double l_l=1e6,l_r=0,r_l=1e6,r_r=0; for(int i=0;i
0)continue;//如果炸弹放在这个点上都到不了,说明这个人肯定到不了。 flag1=true; if(a[i].x-a[i].v*t<=0)//如果不加速也能到,那说明炸弹放在哪里都可以。 { l_l=0; l_r=1e6; continue; } double X=floor((t*(s*s-a[i].v*a[i].v)+a[i].x*a[i].v)/s); l_r=max(l_r,X);//取并集 l_l=min(l_l,(double)a[i].x); } else if(a[i].t==2) { if(a[i].x+(a[i].v+s)*t<1e6)continue; flag2=true; if(a[i].x+a[i].v*t>=1e6) { r_l=0; r_r=1e6; continue; } double X=ceil((1e6*(s-a[i].v)-t*(s*s-a[i].v*a[i].v)+a[i].x*a[i].v)/s); r_l=min(r_l,X); r_r=max(r_r,(double)a[i].x); } } if(!flag1||!flag2)return false; if(l_l>l_r||r_l>r_r)return false; if(l_r
=eps) { if(check(mid))r=mid; else l=mid; mid=(l+r)/2; } printf("%.12lf\n",mid); return 0;}

 

转载于:https://www.cnblogs.com/widsom/p/7422458.html

你可能感兴趣的文章
灰度图像和彩色图像
查看>>
通过vb.net 和NPOI实现对excel的读操作
查看>>
TCP segmentation offload
查看>>
java数据类型
查看>>
数据结构——串的朴素模式和KMP匹配算法
查看>>
FreeMarker-Built-ins for strings
查看>>
验证DataGridView控件的数据输入
查看>>
POJ1033
查看>>
argparse - 命令行选项与参数解析(转)
查看>>
一维数组
查看>>
Linux学习笔记之三
查看>>
Floyd最短路算法
查看>>
Class.forName(String name)方法,到底会触发那个类加载器进行类加载行为?
查看>>
CentOS 6.6 FTP install
查看>>
C#------判断btye[]是否为空
查看>>
图解Ajax工作原理
查看>>
oracle导入导出小记
查看>>
聊一聊log4j2配置文件log4j2.xml
查看>>
NeHe OpenGL教程 第七课:光照和键盘
查看>>
修改上一篇文章的node.js代码,支持默认页及支持中文
查看>>