http://acm.hdu.edu.cn/showproblem.php?pid=5784 给定平面上互不相同的n个点,求所有锐角三角形的个数。3<=n<=2000 锐角三角形因为要三个角都是锐角,所以限制条件多。即使枚举一个点,另外两条边用极角排序,也只能维护一个锐角,剩下的两个角难于统计。 但 ...
分类:
其他好文 时间:
2016-08-02 19:00:11
阅读次数:
183
时限卡的好紧,G++ 3400ms过的,C++超时了。 双关键字排序,然后从左一个一个点看过去,假设第i个点必选,然后对i之后的点按照i这个点为原点进行极角排序,极角相同的排在一起(可以除gcd之后排序),然后统计一下即可。重点需要注意一下。 ...
分类:
其他好文 时间:
2016-07-23 11:53:42
阅读次数:
170
题目链接: Eureka Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Description Professor Zhang draws n points on th ...
分类:
编程语言 时间:
2016-07-21 21:58:44
阅读次数:
202
http://poj.org/problem?id=1279 裸的半平面交的模板,按极角排序后维护一个双端队列,不要忘了最后要去除冗余,即最后一条边(或者更多的边)一定在双端队列里,但它不一定构成半平面,所以要特判。 还有平行的边也要特判,因为平行的边的交点不可求! 最后在poj上用G++交WA了好 ...
分类:
其他好文 时间:
2016-07-16 20:12:25
阅读次数:
241
http://acm.hdu.edu.cn/showproblem.php?pid=4116 题意:给N个圆,求一条直线最多能经过几个圆?(相切也算) 思路:枚举中心圆,将其他圆的切线按照极角排序,并赋上权值(1\-1),那么我们for一遍,sum随时加上权值,当sum最大时,就可以更新答案。 ...
分类:
其他好文 时间:
2016-07-11 18:52:03
阅读次数:
133
题意:平面上有 n 个点,每个点不是黑的就是白的,现在要放一个隔板,把它们分成两部分,使得一侧的白点数加上另一侧的黑点数最多。 析:这个题很容易想到的就是暴力,不妨假设隔板至少经过两个点,即使不经过也可以通过平移使它经过,然后每次枚举两个点,当作隔板,枚举量是n*n, 然后计算是 n,那么时间复杂度 ...
分类:
编程语言 时间:
2016-07-06 20:00:02
阅读次数:
129
动态凸包就是可以支持动态插入点,维护凸包信息的一类问题 又考到了,又被炸飞了(然而其实弱的连凸包性质都看不出来 注意只能支持动态插入点,而不支持动态删除和插入 不过删除的话如果不强制在线反过来就是插入啊OwO 不是很喜欢水平序的动态凸包,因为要维护上下两个凸壳好烦 所以就学了一发极角序 大概做法是以 ...
分类:
其他好文 时间:
2016-07-06 09:56:03
阅读次数:
635
思路:我们可以考虑三角剖分,这样问题就变成考虑三角形的选取概率和三角形内有多少个点了。 先用树状数组预处理出三角剖分的三角形中有多少个点,然后用线段树维护,先用原点极角排序,然后枚举i,再以i极角排序,此时线段树的作用就来了,每次到一个询问的教室点,我们就在线段树里面查找之前的概率,统计贡献即可。 ...
分类:
其他好文 时间:
2016-07-04 23:30:53
阅读次数:
234
题目链接 思路:参考了题解。对询问进行极角排序,然后用树状数组维护一下前缀和即可。 /* ID: onlyazh1 LANG: C++ TASK: test */ #include<bits/stdc++.h> using namespace std; #define lson l,m,rt<<1 ...
分类:
编程语言 时间:
2016-05-22 23:21:25
阅读次数:
367