牛客网暑期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 ...
随机推荐
- PHP 导入Excel数据 到数据库
/** * 导入excel * @throws \PHPExcel_Exception * @throws \PHPExcel_Reader_Exception */ public function ...
- 讲讲Java8的Optional类
前言 Java 8中引入了 Optional 类来解决 NullPointerException 与繁琐的 null 检查,该类首次出现在 Guava.Java 8 才成为类库中的一部分. 入门 Op ...
- 【SpringBoot1.x】SpringBoot1.x 缓存
SpringBoot1.x 缓存 文章源码 JSR107 Java Caching 定义了 5 个核心接口,分别为: CachingProvider 定义了创建.配置.获取.管理和控制多个 Cache ...
- LeetCode237 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 现有一个链表 -- head = [4,5,1,9],它可以表示为: 4 -> 5 -> 1 - ...
- Flink SQL结合Kafka、Elasticsearch、Kibana实时分析电商用户行为
body { margin: 0 auto; font: 13px / 1 Helvetica, Arial, sans-serif; color: rgba(68, 68, 68, 1); padd ...
- 2.jmeter组件介绍
jmeter默认语言设置: 1.临时设置: 进入options -- Choose Language -- 选择中文简体,设置后语言 切换成中文,重启失效 2.永久设置:进入jmeter目录下的 ...
- 技术基础 | Cassandra RBAC助你打击“虚拟海盗”,让他们对数据“战利品”望而不得
现如今,我们称虚拟世界里的海盗们为"黑客",他们所追寻的战利品就是在你数据库某处的数据. 而我们能够保证你的数据安全的工具之一,就是"Cassandra基于角色的访问 ...
- redis持久化怎么选?成年人从来不做选择...
前言 面试官:你知道 redis 是的怎么做持久化的吗? 我:我知道 redis 有两种方式,一种是 RDB,一种是 AOF. 面试官:那这两种方式具体是怎么做的,它们的区别是什么,生产环境中到底应该 ...
- CPNDet:粗暴地给CenterNet加入two-stage精调,更快更强 | ECCV 2020
本文为CenterNet作者发表的,论文提出anchor-free/two-stage目标检测算法CPN,使用关键点提取候选框再使用两阶段分类器进行预测.论文整体思路很简单,但CPN的准确率和推理速度 ...
- iostat的输出
第一行显示的时子系统启动以来的平均值,接下来的报告显示了增量的平均值,每个设备一行 Device: rrqm/s wrqm/s r/s w/s rsec/s ...