牛客网暑期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 ...
随机推荐
- swack的wiki站上线
swack的个人wiki网址:www.swack.cn [服务器破旧,速度较慢,见谅!]
- Java 安全之Weblogic 2017-3248分析
Java 安全之Weblogic 2017-3248分析 0x00 前言 在开头先来谈谈前面的绕过方式,前面的绕过方式分别使用了streamMessageImpl 和MarshalledObject对 ...
- 【Java集合】HashSet源码解析以及HashSet与HashMap的区别
HashSet 前言 HashSet是一个不可重复且元素无序的集合.内部使用HashMap实现. 我们可以从HashSet源码的类注释中获取到如下信息: 底层基于HashMap实现,所以迭代过程中不能 ...
- 实现strStr
Implement strStr(). Return the index of the first occurrence of needle in haystack, or -1 if needle ...
- 【Linux】Linux进程间通信的几种方式
一.进程间通信的目的 数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间 共享数据:多个进程要操作共享数据,一个进程对共享数据 信息传递:一个进程需要向另一个进程发 ...
- 【VNC】vnc安装oracle的时候不显示图形化界面
背景: 在虚拟机搭建了一个环境,准备安装oracle.但是环境都配置完成后,执行./runInstaller的时候,没有界面显示,只显示下面的界面 多次尝试后,发现,还是这样,期初是因为没有配置DIS ...
- 攻防世界 - Crypto(一)
base64: 根据题目base64可知编码方式,下载附件发现是一个txt文件,把内容用工具解码就彳亍了,即可得到flag, flag: cyberpeace{Welcome_to_new_World ...
- ctfhub技能树—web前置技能—http协议—302跳转
开启靶机 打开环境,查看显示 点击Give me Flag后发生跳转 根据题目提示为HTTP临时重定向 简单记录一下HTTP临时重定向是什么 HTTP重定向:服务器无法处理浏览器发送过来的请求(req ...
- mybatis缓存源码分析之浅谈缓存设计
本文是关于mybatis缓存模块设计的读后感,关于缓存的思考,关于mybatis的缓存源码详细分析在另一篇文章:https://www.cnblogs.com/gmt-hao/p/12448896.h ...
- MySQL调优性能监控之performance schema
一.performance_schema的介绍 performance:性能 schema:图(表)示,以大纲或模型的形式表示计划或理论. MySQL的performance schema 用于监控M ...