极角是极坐标系中的角度 我们对这个角度进行点的排序 利用类的概念设置结构体 #include <bits/stdc++.h> using namespace std; typedef long long LL; const int N = 101001; const LL INF = 0x3f3f3 ...
分类:
编程语言 时间:
2020-05-27 15:45:16
阅读次数:
64
做的我要吐了。。留着吧以后再看看 /* 两两枚举起始的点,然后按题意模拟寻找下去,为了加速,预处理nxt[i][j]表示直线p[i]->p[j]旋转时,下一个碰到点的下标 */ #include <iostream> #include <algorithm> #include <vector> #i ...
分类:
编程语言 时间:
2020-05-07 18:08:40
阅读次数:
69
这题还是按角度进行极角排序简单点 /* 按亮度从大到小排序,从大的给小的连一条向量,极角排序后所有向量在两个象限内,那么可行,反之不可行 */ #include<bits/stdc++.h> using namespace std; #define N 1005 typedef double db; ...
分类:
编程语言 时间:
2020-04-09 22:55:58
阅读次数:
131
#include<bits/stdc++.h> using namespace std; typedef double db; const db eps=1e-6; const db pi=acos(-1); int n; struct Node{ int id;db h; Node(){} Nod ...
分类:
编程语言 时间:
2020-03-17 08:29:54
阅读次数:
74
多边形的表示 + 顶点表示。只要得到顶点再连线即可。如果是凸多边形由点集极角排序即可,其他情况不太了解 + 点阵表示。需要判断哪些属于内部点 本文主要讨论点阵表示 其实主要是PPT的copy,但是复制一遍确实印象深刻一点?? 1.逐点判断法 即一个个点判断是不是属于图形内部,主要方法是射线法。 从待 ...
分类:
编程语言 时间:
2020-03-09 17:37:57
阅读次数:
90
碰到极角排序不能无脑就用双指针写,要思考是否有更加好的写法 本题由于有三点共线,所以双指针扫描会有问题,由于只要求直角个数,所以我们可以直接用lower_bound二分去找这个就可以 或者也可以用map重载point的=,<,>运算 #include<bits/stdc++.h> using nam ...
分类:
编程语言 时间:
2020-02-21 22:10:58
阅读次数:
89
"Link" 注意到合法的一对三角形一定存在一对内公切线。 那么我们得到了一个$O(n^3)$的做法:枚举一条公切线的两个端点,计算公切线左侧和右侧的点数并统计答案。 考虑优化,先固定公切线的一端,然后把另一端按照该公切线的极角排序,那么利用前缀和就可以做到$O(n^2\log n)$了。 ...
分类:
其他好文 时间:
2020-02-21 17:47:15
阅读次数:
87
这个版本还不能处理三点共线的情况(处理起来其实比较麻烦) 可以用atan2来排序(较为简单,但是精度误差大),也可以用叉积排序(比较优秀) atan2 #include <iostream> #include <cstdio> #include <cstring> #include <algorit ...
分类:
编程语言 时间:
2020-02-19 23:43:34
阅读次数:
81
Scrambled Polygon POJ - 2007 题意: 思路:其实就是将(0,0)这个点按照极角排序,其他点对于(0,0)来排序,将排序后输出就行,注意输入不定 1 // 2 // Created by HJYL on 2020/1/17. 3 // 4 #include<iostream ...
分类:
编程语言 时间:
2020-01-29 21:36:10
阅读次数:
54
链接:https://codeforces.com/problemset/problem/1284/E 题意:平面上有n个点,问你存在多少组四个点围成的四边形 严格包围某个点P的情况。不存在三点共线。 思路:首先看数据范围是2500,可以做n^2的枚举,我们可以枚举两遍n。正面求解有些困难,反面求解 ...
分类:
编程语言 时间:
2020-01-13 09:24:21
阅读次数:
87