牛客网暑期ACM多校训练营(第二场)message
传送门:https://ac.nowcoder.com/acm/problem/16631
题意
题解
代码
1 #include<bits/stdc++.h>
2 #define ll long long
3 #define eps 1e-10
4 using namespace std;
5
6 const ll maxn=1e5+10;
7
8 struct node
9 {
10 double x,y;
11 ll id;
12 }p[maxn],s[maxn];
13
14 double ans[maxn];
15
16 double cross(node a,node b,node c)
17 {
18 return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y);
19 }
20
21 ll dcmp(double x)
22 {
23 return fabs(x)<eps?0:x<0?-1:1;
24 }
25
26 bool operator <(node p1,node p2)
27 {
28 return dcmp(p1.x-p2.x)<0||(dcmp(p1.x-p2.x)==0&&dcmp(p1.y-p2.y)<0);
29 }
30
31 int main()
32 {
33 ios::sync_with_stdio(false);
34 cin.tie(0);
35 cout.tie(0);
36 ll n;
37 cin>>n;
38 for(ll i=0;i<n;i++){
39 cin>>p[i].x>>p[i].y;
40 }
41 ll m;
42 cin>>m;
43 for(ll i=n;i<n+m;i++) cin>>p[i].x>>p[i].y,p[i].id=i;
44 for(ll i=0;i<n+m;i++) p[i].x=-p[i].x;
45 sort(p,p+n+m);
46 ll top=0;
47 for(ll i=0;i<n+m;i++){
48 if(p[i].id){
49 if(!top) continue;
50 ll l=1,r=top;
51 while(l<r){
52 ll mid=l+r>>1;
53 if(cross(s[mid],s[mid+1],p[i])<=0) r=mid;
54 else l=mid+1;
55 }
56 ans[p[i].id]=max(ans[p[i].id],(p[i].y-s[l].y)/(p[i].x-s[l].x));
57 }
58 else{
59 while(top>1&&dcmp(cross(s[top-1],s[top],p[i]))<=0) top--;
60 //如果是向右转,这个中间点就不是我们要找的点
61 s[++top]=p[i];//如果是向左转,就加进来
62 }
63 }
64 reverse(p,p+n+m);
65 top=0;
66 for(ll i=0;i<n+m;i++){
67 if(p[i].id){
68 if(!top) continue;
69 ll l=1,r=top,pos=1;
70 while(l<r){
71 ll mid=l+r>>1;
72 if(cross(s[mid],s[mid+1],p[i])<=0) r=mid;
73 else l=mid+1;
74 }
75 ans[p[i].id]=max(ans[p[i].id],(p[i].y-s[l].y)/(p[i].x-s[l].x));
76 }
77 else{
78 while(top>1&&dcmp(cross(s[top-1],s[top],p[i]))<=0) top--;
79 //如果是向右转,这个中间点就不是我们要找的点
80 s[++top]=p[i];//如果是向左转,就加进来
81 }
82 }
83 for(ll i=n;i<m+n;i++){
84 if(dcmp(ans[i])<=0) cout<<"No cross"<<endl;
85 else cout<<setiosflags(ios::fixed)<<setprecision(15)<<ans[i]<<endl;
86 }
87 return 0;
88 }
牛客网暑期ACM多校训练营(第二场)message的更多相关文章
- 牛客网暑期ACM多校训练营 第九场
HPrefix Sum study from : https://blog.csdn.net/mitsuha_/article/details/81774727 k较小.分离x和k. 另外的可能:求a ...
- 牛客网暑期ACM多校训练营(第四场):A Ternary String(欧拉降幂)
链接:牛客网暑期ACM多校训练营(第四场):A Ternary String 题意:给出一段数列 s,只包含 0.1.2 三种数.每秒在每个 2 后面会插入一个 1 ,每个 1 后面会插入一个 0,之 ...
- 牛客网暑期ACM多校训练营(第五场):F - take
链接:牛客网暑期ACM多校训练营(第五场):F - take 题意: Kanade有n个盒子,第i个盒子有p [i]概率有一个d [i]大小的钻石. 起初,Kanade有一颗0号钻石.她将从第1到第n ...
- 牛客网 暑期ACM多校训练营(第二场)A.run-动态规划 or 递推?
牛客网暑期ACM多校训练营(第二场) 水博客. A.run 题意就是一个人一秒可以走1步或者跑K步,不能连续跑2秒,他从0开始移动,移动到[L,R]的某一点就可以结束.问一共有多少种移动的方式. 个人 ...
- 牛客网 暑期ACM多校训练营(第一场)A.Monotonic Matrix-矩阵转化为格子路径的非降路径计数,Lindström-Gessel-Viennot引理-组合数学
牛客网暑期ACM多校训练营(第一场) A.Monotonic Matrix 这个题就是给你一个n*m的矩阵,往里面填{0,1,2}这三种数,要求是Ai,j⩽Ai+1,j,Ai,j⩽Ai,j+1 ,问你 ...
- 牛客网暑期ACM多校训练营(第三场)H Diff-prime Pairs (贡献)
牛客网暑期ACM多校训练营(第三场)H Diff-prime Pairs (贡献) 链接:https://ac.nowcoder.com/acm/contest/141/H来源:牛客网 Eddy ha ...
- 2018牛客网暑期ACM多校训练营(第二场)I- car ( 思维)
2018牛客网暑期ACM多校训练营(第二场)I- car 链接:https://ac.nowcoder.com/acm/contest/140/I来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 ...
- 牛客网暑期ACM多校训练营(第七场)Bit Compression
链接:https://www.nowcoder.com/acm/contest/145/C 来源:牛客网 题目描述 A binary string s of length N = 2n is give ...
- 牛客网暑期ACM多校训练营(第一场) - J Different Integers(线段数组or莫队)
链接:https://www.nowcoder.com/acm/contest/139/J来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语言1048 ...
- 牛客网暑期ACM多校训练营(第九场) A题 FWT
链接:https://www.nowcoder.com/acm/contest/147/A来源:牛客网 Niuniu has recently learned how to use Gaussian ...
随机推荐
- WixVersionControl Wix项目版本控制
原文链接:https://www.swack.cn/wiki/001565675133949eff0d3d5a51f48288cf6d8248905e28f000/001569821278313e6b ...
- Cisco常用命令
• 首次配置网络设备 ○ 需要使用Console线连接进行初始化配置 § 在PC使用"超级终端"或其他软件. • 交换机的工作模式: ...
- 解锁Renderbus客户端使用新技巧----快速渲染效果图篇
度娘说,效果图最基本的要求就是:应该符合事物的本身尺寸,不能为了美观而使用效果把相关模型的尺寸变动,那样的效果图不但不能起到表现设计的作用,反而成为影响设计的一个因素.可见高效渲染效果图是都是当下我们 ...
- 没搞清楚网络I/O模型?那怎么入门Netty
微信搜索[阿丸笔记],关注Java/MySQL/中间件各系列原创实战笔记,干货满满. 本文是Netty系列笔记第二篇 Netty是网络应用框架,所以从最本质的角度来看,是对网络I/O模型的封装使用. ...
- 安装newman error:package exports for 'c:\nmp\node_modules\newman\node_module 解决办法
一.场景描述: 通过npm安装newman时,一直失败. 尝试了很多安装命令: npm install -g newman npm install -g newman --registry=http: ...
- Arduino—学习笔记—基础语法
图解 函数具体讲解 pinMode(工作接脚,模式) 工作接脚 工作接脚编号(0--13与A0--A5) 模式 工作模式:INPUT或OUTPUT 例子 将8接口设置为输出模式 pinMode(8,O ...
- RocketMQ—消息队列入门
消息队列功能介绍 字面上说的消息队列是数据结构中"先进先出"的一种数据结构,但是如果要求消除单点故障,保证消息传输可靠性,应对大流量的冲击,对消息队列的要求就很高了.现在互联网的& ...
- 聊聊.net应用程序的Docker镜像
要在容器中运行.net应用程序,你需要在容器镜像中安装.net Framework或.net Core 运行时.这不是你需要自己管理的东西,因为微软提供的Docker镜像已经安装了运行时,你可以使用 ...
- 如何讲清楚 Java 面向对象的问题与知识?(类与对象,封装,继承,多态,接口,内部类...)
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- try-catch-finally中的4个大坑,不小心就栽进去了!
在 Java 语言中 try-catch-finally 看似简单,一副人畜无害的样子,但想要真正的"掌控"它,却并不是一件容易的事.别的不说,咱就拿 fianlly 来说吧,别看 ...