计算几何
huanghongxun
这个作者很懒,什么都没留下…
展开
-
CodeForces 600D Area of Two Circles' Intersection 圆面积交 (POJ 2546, ZOJ 1597)
恩。。入门题。给出两圆坐标半径,求相交面积。切记开long double...中途忘改一个变量double WA test 36好几次。。发现sublime text在后缀名是cp的时候也能识别cpp,是我火星了么。对两圆心和交点组成三角形用下余弦定理就好了。cout怎么输出long double会跪的。。我gcc有问题么。#include #include #includ原创 2015-11-28 21:17:43 · 941 阅读 · 0 评论 -
BZOJ 2618 CQOI 2006 凸多边形 半平面交
当成模板题来做了。。给出几个多边形求交面积。把这些多边形拆成一些半平面的交。最后算所有的半平面的交即可。代码还蛮长的。#include #include #include using namespace std;const int N = 1005;struct Point { double x, y; Point(){} Point(double原创 2016-01-07 23:11:05 · 493 阅读 · 0 评论 -
POJ 1755 Triathlon BZOJ 3800 Saber VS Lancer 半平面交
刘汝佳的书讲的很清楚了。。不过还是很奇怪为什么删了2个solve()中的判断就WA了。改了right函数还是WA。#define FOR(i,j,k) for(i=j;i<=k;i++)#include #include #include #include using namespace std;const int N = 128;typedef long double原创 2016-01-10 15:28:48 · 685 阅读 · 0 评论 -
POJ 3968|UVALive 4992|HDU 3761|UVA 1475|Jungle Outpost|二分|半平面交
有n个瞭望台,形成一个凸的n多边形。瞭望台的保护范围就是凸多边形内。敌人进攻会炸毁一些瞭望台使得总部暴露在剩下瞭望台凸包之外。你的任务是选择一个点作为总部使得最少需要炸坏的瞭望台总数尽可能多。输出此时敌人需要炸毁的瞭望台数量。vjudge真是个好地方,4倍经验唾手可得一开始想了个O(n2)O(n^2)的真是作死。。 嗯nn这么大应该是O(nlogn)O(n\log n)的。 二分答案。原创 2016-04-26 10:03:10 · 917 阅读 · 0 评论 -
SGU 278|Fuel|凸包
有N种汽油每种有三个属性:密度aia_i,强度cic_i,价格bib_i。用第i种汽油mmkg拥有m∗aim*a_i的体积,m*ci_m*ci_的强度,花费m∗bim*b_i。汽车能装任意比例混合的多种汽油。总体积不能超过AA,总花费不能超过BB,最大化总强度,保留至少6位小数。∑miai≤A∑mibi≤Bmax∑mici\begin{aligned} \sum m_ia_i\leq A \\\s原创 2016-04-26 16:57:02 · 734 阅读 · 0 评论 -
BZOJ 3571|HNOI 2014|画框|最优匹配|计算几何
求最大匹配,使得选中匹配边的权值a的和与权值b的和的积最小。考虑方案(∑ai,∑bi)(\sum a_i,\sum b_i) ,其在反比例函数ans=xyans=xy上,显然在这个函数的右上方的点都比当前方案更优,因此所有可能的答案都在这个下凸壳上,考虑枚举下凸壳上的点,发现如果我们连接下凸壳两端点,那么离连线最远且最靠近原点的点肯定在下凸壳上,因此考虑分治。 (摘自:http://blog.cs原创 2016-04-26 22:46:10 · 576 阅读 · 0 评论 -
CodeForces 274C|275E|The Last Hole!|计算几何
给出N个点,从零时刻起,分别以这N个点为圆心的N个圆逐渐变大,有半径r=时刻t;随着时间推移,图形当中可能出现一些”洞”,而且出现的洞一定会在某时刻消失。严格地,一个洞被定义为封闭的、连通的未被圆覆盖的区域,可以理解为被圆所围起来的区域。对于给出的n个点,求出最后一个洞消失的时间;如果没有出现过洞,输出-1。最后一个洞♂考虑3个圆的情况,发现洞消失的位置即三个圆心围成的三角形的外心,而且当且仅当三角原创 2016-04-27 12:18:29 · 901 阅读 · 2 评论 -
URAL 1849|Rabbit Hunt 2|计算几何|二分|Set
待续#include <cstdio>#include <algorithm>using namespace std;#define FOR(i,j,k) for(i=j;i<=k;++i)#define rep(i,j,k) for(i=j;i<k;++i)const int N = 10005;struct Data { int x, y; Data(int a =原创 2016-04-24 17:53:00 · 789 阅读 · 0 评论 -
Ural 1084|Goat in the Gardon|计算几何
http://acm.timus.ru/problem.aspx?space=1&num=1084题目有个人在他的正方形院子的中心的柱子上栓了一头山羊。这只山羊十分地贪吃,它能接触到的食物都会被它吃掉,但它不能出院子或者弄断栓它的绳子。它能到达院子里多大的面积?输入一行2个整数:正方向院子的边长dd和绳子的长度rr(都不会超过100)。输出一行一个精确到3位小数的浮点数表示山羊能到达的面积。样例输入原创 2017-10-06 22:20:04 · 287 阅读 · 0 评论 -
BZOJ 1038 ZJOI2008 瞭望塔 半平面交
#define FOR(i,j,k) for(i=j;i<=k;i++)#include #include #include #include using namespace std;const int N = 20005;struct Point { double x, y; Point(){} Point(double _x, double _y) : x原创 2016-01-08 18:34:29 · 345 阅读 · 0 评论 -
BZOJ 2732 HNOI 2012 射箭 半平面交
题意构造一个二次函数使其能依次穿过更多的竖向线段。题解题目要求最大化 kk,我们可以转化为判定性问题。 发现对于一个线段 [(x,y1),(x,y2)][(x, y_1), (x, y_2)],二次函数解析式 y=ax2+bxy=ax^2+bx 满足y1≤y≤y2y_1\leq y\leq y_2。其中 aa 和 bb 都是变量。 问题转为线性规划判定是否有解。利用半平面交解决。 那么对于 x原创 2016-01-08 22:05:52 · 483 阅读 · 0 评论 -
POJ 3335 Rotating Scoreboard 半平面交
应该是求多边形是否存在?上半平面交。返回的点数#include #include #include using namespace std;const int N = 1005;struct Point { double x, y; Point(){} Point(double _x, double _y) : x(_x), y(_y) {}原创 2016-01-07 23:21:26 · 348 阅读 · 0 评论 -
POJ 1474 ZOJ 1248 HDU 1469 Video Surveillance 半平面交
看着网上说这个要注意那个要注意。。什么m默默地写完感觉那些注意事项然并卵。仍然是判断多边形是否存在。半平面交出来点数超过2就存在。神TM忘打空行。又一个PE。。#include #include #include using namespace std;const int N = 1005;struct Point { double x, y; Point原创 2016-01-07 23:29:35 · 399 阅读 · 0 评论 -
POJ 2451 Uyuw's Concert 半平面交求面积
题意:半平面交求面积CQOI 2006 凸多边形的弱化版。好像做题的顺序搞错了。。#include #include #include using namespace std;const int N = 20005;struct Point { double x, y; Point(){} Point(double _x, double _y) : x原创 2016-01-08 13:07:58 · 501 阅读 · 0 评论 -
POJ 3525 Most Distant Point from the Sea 半平面交判多边形存在
问凸多边形中某点到边界距离最远有多大。最优值问题转化判定性问题。判定就很好判定啦,将凸多边形往内缩答案,如果半平面交有解那么答案就是允许的。#define FOR(i,j,k) for(i=j;i<=k;i++)#include #include #include #include using namespace std;const int N = 20005;struc原创 2016-01-09 23:19:49 · 576 阅读 · 0 评论 -
POJ 1279 Art Gallery 半平面交求面积
和CQOI 2006 凸多边形就多组数据的区别。。#include #include #include using namespace std;const int N = 1502;struct Point { double x, y; Point(){} Point(double _x, double _y) : x(_x), y(_y) {} Po原创 2016-01-10 15:38:33 · 459 阅读 · 0 评论 -
POJ 2540 ZOJ 1886 Hotter Colder 半平面交
之前研究性学习写了这道题。。然而写论文的时候并没有做233,然后现在AC后发现论文里的好像就写错了。。以下是以前写的粗略的题解。孩子们的游戏Hotter Colder的游戏规则:A在B在房间内藏了什么东西的时候离开房间,到(0,0)并且访问房间内其他位置。当A到了一个新未知,如果新位置相对于原来的位置更近,则B会说"Hotter",更远"Colder",不变"Same"。你将获得B每次说"原创 2016-01-10 19:25:30 · 531 阅读 · 0 评论 -
BZOJ 3190 JLOI 2013 赛车 半平面交
每辆赛车有起始位置和速度,问哪些赛车在比赛过程中领先。简直立了flag。。精度问题卡死我了。。由s-t图像可得使用半平面交。注意会有2两车的参数完全相同。要去重的时候把id也记录下来。而且可以两辆车同时领先。有些的斜率太相近。。结果atan2结果一样算法跪了。我的算法应该是必开long double的。下次用反三角一定要开long double。。。。。。调了好久才原创 2016-01-10 13:53:28 · 592 阅读 · 0 评论 -
BZOJ 1007 HNOI 2008 水平可见直线 半平面交
给出一些直线,问从正上方往下看能看到哪些直线。一道简单的计算几何题,不过我决定硬搞成半平面交233稍微改了下,因为是维护上凸壳,所以不用处理首尾半平面相交的问题了。y=ax+b的直线过定点(0,b),方向向量(1,a)。right函数改成忘记排序编号怒WA一发233.判断double没有判精度直接用==并没有WA,好神奇。之前也一直没有判精度。#include #in原创 2016-01-08 22:52:45 · 487 阅读 · 0 评论 -
2017 ACM ICPC East Central North America Regional Contest
手速场。。就不放队友的代码了。A: Abstract Art题目大意给定多个多边形,求面积并。题解模板题。B: Craters题目大意给定多个圆,求这些圆的凸包周长。题解一个圆最多引出两条切线,计算切线注意一些情况就好了。 不过我的做法是暴力将圆拆成3000个点,然后暴力求背包。#include <bits/stdc+...原创 2018-04-21 23:25:06 · 1007 阅读 · 0 评论