
ACM/ICPC_计算几何
just_sort
Acdream.
展开
-
UVA 11889
【题目】点击打开链接【解题思路】本题要求寻找最小的B,使得lcm(A,B)=C。这里容易想当然地认为B=C/A就是答案。实际上是错误的做法。因为lcm(A,C/A)不一定等于C,如果想让lcm(A,C/A)==C,必须有gcd(A,C/A)==1。通过恒等式a*b==gcd(a,b)*lcm(a,b)即可证明。这就提示我们得到临时的B之后,要想办法将A,B变为互素的两个数。还是利用恒等式,我们原创 2016-03-25 19:00:23 · 1205 阅读 · 0 评论 -
HDU.3629 Convex (计算凸多边形个数)
【题意】平面上给n个点,问有多少个凸四边形?【解题方法】对于每个点,凹四边形的个数等于:C(n-1,3)-在这个点同一侧三点构成的三角形的个数。对于凸多边形的一个顶点,其他顶点必然在穿过这个顶点的直线的同侧。算极角时,如果是负数(-pi ~ 0),就把它加上2 * pi,这样就把角度统一到了0~2pi,另外,向这题顺次统计两个点的夹角时,由于会出现转了一圈的情况不好计算角度,所以在原创 2016-07-31 20:21:12 · 689 阅读 · 0 评论 -
HDU4741 Save Labman No.004
【题意】求两条空间异面直线的最短距离,和取得这个最短距离的两个直线上的坐标。【解题方法】板子一通套。【AC 代码】#include #include #include #include #include #include using namespace std;const double eps = 1e-8;//三维空间点struct Point{ dou原创 2016-07-31 20:53:17 · 512 阅读 · 0 评论 -
挑战程序设计 &&计算几何&&POJ.1127 Jack Straws
【题意】给你一些线段,求出哪些线段是相连的,哪些是不相连的。相连包括间接相连,即这两条线段本身不直接相连,而是通过其它线段的连接而间接相连。【解题方法】解决这道题目的关键要解决两个问题:1.判断两条线段是否直接相连,即它们相交与否,这是一个几何问题;2.如果某两条线段不相交,那么它们是否通过其它线段的连接而间接相连。这个地方方法可以用并查集,也可以用Floyd-Warshall算法,我原创 2016-07-21 10:26:41 · 751 阅读 · 1 评论 -
POJ 1106 Transmitters
【题意】给一个半圆的半径和圆心坐标,再给平面上的n个点,这个半圆可以绕圆心任意旋转,问半圆最多能覆盖多少个点?【解题方法】先把半径距离之内的点放到集合中,然后枚举一个点和圆心组成直线,判断在直线左侧的点有多少个,维护最大值即可。【AC 代码】#include #include #include #include #include #include using namespa原创 2016-08-01 09:20:14 · 346 阅读 · 0 评论 -
POJ 3608 Bridge Across Islands(旋转卡壳)
【解题思路参考】点击打开链接【题意】求两个平面上的凸多边形的最近距离。【解题方法】凸多边形间最小距离给定两个非连接(比如不相交)的凸多边形 P 和 Q, 目标是找到拥有最小距离的点对 (p,q) (p 属于P 且 q 属于 Q)。 事实上, 多边形非连接十分重要, 因为我们所说的多边形包含其内部。 如果多边形相交, 那么最小距离就变得没有意义了。 然而, 这个问原创 2016-08-01 10:54:34 · 551 阅读 · 0 评论 -
HDU.3007 Buried memory
【题意】给了平面上N个点,求一个最小的圆能覆盖所有的点。【解题方法】最小圆覆盖板子题。增量法:假设圆O是前i-1个点得最小覆盖圆,加入第i个点,如果在圆内或边上则什么也不做。否,新得到的最小覆盖圆肯定经过第i个点。然后以第i个点为基础(半径为0),重复以上过程依次加入第j个点,若第j个点在圆外,则最小覆盖圆必经过第j个点。重复以上步骤(因为最多需要三个点来确定这个最小覆盖圆,所原创 2016-08-01 12:37:31 · 782 阅读 · 0 评论 -
计算几何
这两天在学习计算几何,随便说说自己的学习过程吧。 基本的叉积、点积和凸包等东西就不多说什么了,网上一搜一大堆,切一些题目基本熟悉了就差不多了。 一些基本的题目可以自己搜索,比如这个blog:http://blog.sina.com.cn/s/blog_49c5866c0100f3om.html 接下来,研究了半平面交,思想方法看07年朱泽园的国家队论文,模板代码参考自我校大牛韬哥转载 2016-08-28 16:04:33 · 1139 阅读 · 0 评论 -
HDU 4082 Hou Yi's secret
Hou Yi's secretTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4384 Accepted Submission(s): 1018Problem DescriptionLong long ago,原创 2016-09-01 12:24:18 · 695 阅读 · 0 评论 -
Codeforces Beta Round #1 C. Ancient Berland Circus
C. Ancient Berland Circustime limit per test2 secondsmemory limit per test64 megabytesinputstandard inputoutputstandard outputNowadays all circuses in Berland have a roun原创 2016-09-01 20:44:42 · 480 阅读 · 0 评论 -
POJ 1265 Area
AreaTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 6324 Accepted: 2774DescriptionBeing well known for its highly innovative products, Merck would definit原创 2016-09-02 18:51:25 · 448 阅读 · 0 评论 -
BZOJ 1132: [POI2008]Tro 计算几何,统计对答案贡献
Description平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Input第一行给出数字N,N在[3,3000] 下面N行给出N个点的坐标,其值在[0,10000] Output保留一位小数,误差不超过0.1 Sample Input 50 01 20 21 01 1 Sample Output 7.0解题方法: 首先我们枚举每一个点 以这个点为原点建立原创 2017-02-10 15:46:21 · 660 阅读 · 0 评论 -
BZOJ 1043: [HAOI2008]下落的圆盘 计算几何,贪心,线段交
Description 有n个圆盘从天而降,后面落下的可以盖住前面的。求最后形成的封闭区域的周长。看下面这副图, 所有的红 色线条的总长度即为所求. Input 第一行为1个整数n,N<=1000 接下来n行每行3个实数,ri,xi,yi,表示下落时第i个圆盘的半径和圆心坐标.Output 最后的周长,保留三位小数 Sample Input 21 0 01 1 0 Sample O原创 2017-01-20 19:37:10 · 846 阅读 · 0 评论 -
POJ.2926 平面最远哈密顿距离
【题意】点击打开链接【解题方法】哈密顿距离定义是:对于二维平面上的两点A,B,其坐标分别为:,,那么它们的哈密顿距离D表示为: ,去掉绝对值符号,有以下四种情况: 然后进一步转化: 然后,用二进制枚举。 D = max{每种情况的最大值}【AC 代码】#include #include #include #include usin原创 2016-07-31 19:19:06 · 1118 阅读 · 0 评论 -
POJ2737 Swamp Things
【题意】判断最多的共线的点数【解题方法】把所有点对的斜率都存下来 然后排序 看有多少相同的 相同的说明共线 注意判断斜率不存在的情况【AC 代码】#include #include #include #include #include using namespace std;const double PI=acos(-1);const double eps=1e-8;c原创 2016-07-31 15:49:17 · 559 阅读 · 0 评论 -
UVA 10780
【题目】点击打开链接【题意】给你m,n求最大的k使得是n!的因子;【解题思路】把m质因子分解为,设p为pi中最大的素数,,然后求n!中p的个数即为为b(这里的pi为p),即为答案(对于i,求出相应的b,最小的)【AC代码】#include #include #include #include #include using namespace std;//[n/p]+[原创 2016-03-25 20:06:35 · 1105 阅读 · 0 评论 -
HDOJ 1348 Wall (凸包)
【题意】给了n个点,求这n个点的凸包的边长之和再加上一个给定圆的周长!【分析】第一次做凸包问题,通过这个题也了解了凸包是什么,好神奇啊,这里分享一个求凸包的方法的博客,个人认为写得很不错点击打开链接!~~~~【解题思路】直接用求凸模板求最小凸包即可,这里最常用的可能就是上面博客里面提到的Andrew算法了(这里是水平序的)首先=按照x=从小到大排序(如果x相同,按照y排序),删除重复点后得原创 2016-05-08 19:50:07 · 581 阅读 · 0 评论 -
HDU 1392 Surround the Trees(凸包)
【题意】给n个点求凸包。【分析】求凸模板,这里注意特判n==2的情况,没注意到WA一回!【AC代码】#include #include #include #include #include #include #include using namespace std;const int maxn = 10010;const double PI = acos(-1);s原创 2016-05-08 20:20:41 · 607 阅读 · 0 评论 -
扩展欧几里得求逆元
【转载】点击打开链接用扩展欧几里得求解逆元是一种常用的方法,当然还有其他的方法。这里主要介绍两种,一种就是扩展欧几里得,另一种是不常用的方法。到后面会介绍。 你是否经常遇到过类似的问题 (A/B)%Mod 。此时,要先计算B%Mod的逆元p, 其实他是用逆元解决的典型题目。但是在使用逆元时候你需满足一下两个条件才能保证得到正确的结果。 一、gcd(B,Mod) =转载 2016-07-28 09:38:18 · 4647 阅读 · 0 评论 -
HDU.4617 Weapon
【题意】N【解题方法】圆柱之间的距离就是中轴线的距离,平行的话很简单,异面的话不会算,记录一下模板吧。【AC code】#include using namespace std;const double eps=1e-8;int sgn(double x){ return xeps;}struct node{ double x,y,z; vo原创 2016-07-30 16:16:52 · 515 阅读 · 0 评论 -
Wunder Fund Round 2016 C. Constellation(贪心+计算几何)
【题意】排序之后,判断是否能构成三角形即可。【AC代码】#include #include #include #include #include #include using namespace std;#define ll long longstruct node{ ll x,y; int id; friend bool operator<(const原创 2016-07-30 16:27:22 · 668 阅读 · 0 评论 -
Educational Codeforces Round 2D. Area of Two Circles' Intersection
【题意】两个圆的面积交。【解题方法】随便算一算就好了,水题【AC 代码】#include using namespace std;const double PI=acos(-1);#define ll long longll x1,y1,r1;ll x2,y2,r2;ll sq(ll x){ return x*x;}double circlejiao(){原创 2016-07-30 16:54:56 · 669 阅读 · 0 评论 -
Educational Codeforces Round 1 C - Nearest vectors
【题意】求n个从原点出发的向量中相距最近的两个的编号【解题方法】极角排序!【AC code】#include using namespace std;const int maxn=100010;const double PI=acos(-1);int n;struct Point{ int x,y,id; long double ang; void r原创 2016-07-30 17:12:21 · 672 阅读 · 0 评论 -
HDU.5128 The E-pang Palace
【题意】N【解题方法】暴力对角线两个点,再暴力另外一条对角线两个点,接下来就是对合法性和相交的各种跑判断了,转移这里有一个特别大的坑点,那就是小矩形可能在大矩形里面。。。【AC 代码】#include #include #include #include using namespace std;const int maxn=1e5+10,INF=0x3f3f3f3f;原创 2016-07-31 09:55:40 · 720 阅读 · 4 评论 -
HDU.5120 Intersection
【题意】给你两个完全相同的圆环,要你求这两个圆环相交的部分面积是多少?【解题方法】圆环由一个大圆里面套一个小圆,中间部分就是圆环,两圆环相交面积 = 大圆相交的面积 - 2*大圆与小圆相交的面积 + 小圆与小圆相交的面积。【AC 代码】#include #include #include #include using namespace std;const double原创 2016-07-31 10:32:06 · 553 阅读 · 0 评论 -
HDU 5839 Special Tetrahedron(计算几何)
【参考BLOG】点击打开链接【题意】在三维空间中给出N个点,找有多少个满足条件的四面体.四面体至少有四条边相等若恰好四条边相等,那么剩下的两边不相邻.【解题方法】四面体中每条边仅有一条边与它不相邻, 可以转化一下题目的条件:寻找四边相等的空间四边形(不能四点共面).首先枚举该空间四边形中的一条对角线,再计算剩余的点跟这条对角线两端点的距离.若某点与这对角线两原创 2016-08-15 15:11:09 · 474 阅读 · 0 评论 -
Codeforces Round #308 (Div. 2) D Vanya and Triangles
【题意】平面上n个点,判断能组成多少不同个三角形?【解题方法】所有可能的组合来减去共线的就行了。。。【AC 代码】#include using namespace std;#define ll long longint n,x[2005],y[2005],cnt[405][405];ll ans;int main(){ cin>>n; for(int i=1原创 2016-07-31 15:07:19 · 343 阅读 · 0 评论 -
BZOJ 1053: [HAOI2007]反素数ant 数论,DFS
Description 对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。如果某个正整数x满足:g(x)>g(i) 0#include <bits/stdc++.h>using namespace std;typedef long long LL;LL n;int ans = 1, num = 1; //数的大小, 约数个数int pri[15] = {1, 2原创 2017-01-22 19:46:07 · 572 阅读 · 0 评论