uva 1421 Archery
来源:互联网 发布:linux怎么粘贴 编辑:程序博客网 时间:2024/06/07 10:07
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define eps 1e-6#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))using namespace std;struct node{double l,r,h;}line[5050];int n;int ok(double x){double L=atan2(line[0].h,line[0].r-x);double R=atan2(line[0].h,line[0].l-x);for(int i=1;i<n;i++){double L1=atan2(line[i].h,line[i].r-x); double R1=atan2(line[i].h,line[i].l-x); if(L-R1>eps) return -1; if(L1-R>eps) return 1; L=MAX(L,L1); R=MIN(R,R1);}return 0;}bool cmp(const node &a,const node &b){return a.h<b.h;}int main(){int T;double w; scanf("%d",&T);while(T--){scanf("%lf%d",&w,&n);for(int i=0;i<n;i++)scanf("%lf%lf%lf",&line[i].h,&line[i].l,&line[i].r);sort(line,line+n,cmp);double l=0,r=w;int flag=0;while(r-l>eps){double m=(l+r)/2;int t=ok(m);if(t==1)l=m;elseif(t==-1)r=m;else{flag=1;break;} }if(flag)printf("YES\n");elseprintf("NO\n");}}
阅读全文
0 0
- UVA - 1421 Archery
- uva 1421 Archery
- UVA 1421 UVALive 4253 Archery
- UVA 1421 UVAlive 4253 - Archery(二分)
- uva 1421 & uvalive 4253 Archery(二分)
- UVA 1421 Archery(二分+维护区间)
- [HNOI2012]archery
- LA4253 - Archery
- Archery Tournament
- [HNOI 2012] 射箭 archery
- UVALive 6324 Archery
- UVALive - 4253 Archery 暴力
- Live Archive 4253 Archery
- LA 4253 Archery -
- LA 4253 Archery
- 刷清橙OJ--A1060.Archery
- Archery Tournament Gym
- LA 4253 Archery (二分)
- jcaob中读取word中的内容,并显示出来
- AngularJS的事件
- office 2010 安装时出错 MSXML版本6.10.1129.0终极解决方案
- 控件缩写大全
- Linux 新建用户
- uva 1421 Archery
- oracle 指定任务计划程序 for linux
- 为银行业变革“开脑洞”
- Linux 常用命令
- Java HTTP 网络请求库框架的使用
- 三大范式
- java的FrenameTo(File)方法
- 使用淘宝 NPM 镜像
- 欢迎使用CSDN-markdown编辑器