
计算几何
小白菜又菜
这个作者很懒,什么都没留下…
展开
-
UVa 11152 - Colourful Flowers
题目:在一个圆形画圆中,在圆周上取3点构成三角形,然后再做三角形的内切圆,内切圆,三角形和内切圆间,三角形和外接圆间; 三个区域分别种上不同的花,问每种花的种植面积。分析:计算几何、简单题。设三边为a、b、c;内切圆和外接圆半径分别r、R。 1.根据海伦定理求解三角形面积:S(ABC) = sqrt((a+b+c)*(a+b-c)*(a+c-原创 2013-10-16 17:14:20 · 1148 阅读 · 0 评论 -
UVa 10167 - Birthday Cake
题目:分析:说明:原创 2014-07-08 10:30:23 · 1699 阅读 · 1 评论 -
UVa 10112 - Myacm Triangles
题目:给你平面上的4-15个点,让你找到面积最大的三角形,三角形中bu原创 2014-06-19 21:28:06 · 721 阅读 · 0 评论 -
UVa 10310 - Dog and Gopher
题目:有一只狗和一直地鼠,原创 2014-07-13 01:08:38 · 1791 阅读 · 0 评论 -
UVa 10250 - The Other Two Trees
题目:已知2点,求另外两点,使得zhe原创 2014-06-20 09:11:28 · 785 阅读 · 0 评论 -
UVa 375 - Inscribed Circles and Isosceles Triangles
题目:给你一个等腰三角形的gao原创 2014-06-20 00:08:01 · 2148 阅读 · 0 评论 -
UVa 920 - Sunny Mountains
题目:有一些山,在一个平面山,给你每个山峰的坐标,太阳从右边照过来,被照到的线段的长度和。分析:计算几何、贪心。首先,按很坐标排序;然后,每次找到左边第一个比它高的山峰, 求出对应的照射长度,求和即可。说明:while(scanf("%d",&t))导致TLE,╮(╯▽╰)╭。#include #include #include #include #i原创 2014-08-13 17:06:40 · 1352 阅读 · 0 评论 -
UVa 10668 - Expanding Rods
题目:有一个金属版,夹在墙中间,他会受热膨胀(1+n*c)原创 2014-09-17 21:39:18 · 880 阅读 · 0 评论 -
UVa 1303 - Wall
题目:有很多点,修一座最短的围墙把素有点围起来,使得所有点到墙的距离不小于l。分析:计算几何,凸包。 如果,没有距离l的限制,则答案就是凸包的周长了;有了距离限制其实是增加了2*π*l; 证明:如上图,在凸包外做对应边的矩形; 多边形内角和 = 180*(n-2);原创 2014-08-29 23:54:10 · 1005 阅读 · 0 评论 -
UVa 10286 - Trouble with a Pentagon
题目:如图在正五边形中画一个正方形,一直正五边形边长,求正方形边长。分析:计算几何,解析几何。求出边长的比例关系带入求解即可。 设正五边形边长为1,在顶点建立直角坐标系,则左上角坐标为:B(-cos36,-sin36); 再计算出左下角坐标:C(-2cos36cos72,-cos36sin72); 求直线BC与直线y原创 2014-10-09 15:16:17 · 1582 阅读 · 0 评论 -
UVa 10697 - Firemen barracks
题目:已知三点,求到三点距离相同的点。分析:计算几何。分三类情况讨论: 1.三点共线,不成立; 2.多点重叠,有多组解; 3.是三角形,输出中点。说明:注意绝对值小于0.05的按0计算;负数的四舍五入与正数不同,-0.05的%.1lf输出是 -0.0。#include #include #include原创 2014-07-24 11:33:41 · 929 阅读 · 0 评论 -
UVa 11909 - Soya Milk
题目:一个上面开口的矩形的牛奶盒,与底面桌子有一定的夹角(有一条底边)和桌面相切,求盒子中牛奶的体积。分析:计算几何、简单题。按照界面计算乘以宽度即可。 处理时按照图示的两种情况即可,分界条件 tanθ 与 h/l 比较即可。#include #include #include #include using name原创 2013-10-16 18:10:54 · 1562 阅读 · 0 评论 -
UVa 10577 - Bounding box
题目:给你正多边形的三个点,求出能够包裹这个凸多变的平行于坐标轴的矩形的最小面积。分析:计算几何、简单题。利用已知三点确定两条线段,求两条线断的垂直平分线,计算出外接圆圆心坐标和半径。 将a点作为起点,利用三角函数的和角函数计算出每个点的位置。 cos(a`) = cos(a+da) = cos(a)*cos(原创 2013-10-16 20:54:04 · 1147 阅读 · 0 评论 -
poj 2354 Titanic
题目:泰坦尼克(⊙v⊙);通过无线电测量冰山的位置,给出船和冰山的精度纬度,求距离。分析:计算几何、大地坐标系。利用公式计算即可。圆心角:acos(cos(la1)*cos(la2)*cos(lo1-lo2)+sin(la1)*sin(la2)。注意:1.输入格式好恶心;2.用c++救AC了g++无限WA。。。#include #include #include #inclu原创 2013-10-17 00:05:29 · 1136 阅读 · 0 评论 -
poj 3433 Road Accident
题目:给你两辆车的左后方和左前方的坐标,车宽和速度,将车看成矩形并分成四部分,问两辆车相撞的位置编号。分析:计算几何、线与线的关系判断。 首先,先将分别运动的两车转移到相对参考系,利用速度向量做差即可。 然后,判断两车相撞,可以分成三种情况:点对点,点对线,线对线。由于点撞到点,一定撞到线上。原创 2013-10-17 21:56:05 · 1019 阅读 · 0 评论 -
UVa 11936 - The Lazy Lumberjacks
题目:判断给定三条边是否能构成三角形。分析:计算几何、简单题。利用两边之和大于第三边判断即可。#include #include #include using namespace std; int main() { int n,a,b,c; while ( cin >> n ) while ( n-- ) {原创 2013-10-18 17:49:11 · 912 阅读 · 0 评论 -
poj 3521 Geometric Map
题目:给你平面上的n条线段,这些线段分成两类: 1.街道边,两个端点都与其他线段相连,是可以行走的路径; 2.标记边,只有一个端点和其他线段相连,标记路径的方向(角度大于90方向的可以通行)。 计算起点到终点的最短距离。输出路径上的点,用0结束;如果不存在输出-1。分析:计算几何、最短路。预处理有点麻烦的题目。由于分原创 2013-10-18 23:16:45 · 1091 阅读 · 0 评论 -
UVa 858 - Berry Picking
题目:给你一个平面的多边形,再给你一条平行于y轴的直线,问直线被多边形截取的总长是否超过目标。分析:计算几何。 方法一:1.求出所有直线和多边形交点。(O(N)) 2.对交点按纵坐标排序,则排序后这些点一定相邻。(O(NlgN)) 3.判断每对相邻点间的原创 2014-03-26 16:02:43 · 1335 阅读 · 0 评论 -
UVa 10209 - Is This Integration ?
题目:一个边长为a的正方形,以每个顶点为圆心a为原创 2014-06-24 10:17:18 · 1498 阅读 · 0 评论 -
UVa 10387 - Billiard
题目:在一个矩形上有个台球原创 2014-06-25 09:18:47 · 635 阅读 · 0 评论 -
UVa 1531 - Problem Bee
题目:如图所示的蜂巢型的图中,蜜蜂想从A点飞到B点,如果A与B不在同一个正六边形中, 则它先飞到A的中心,每次飞到相邻格子的中心,最后飞到B的中心,再飞到B点; 如果在一个格子中,直接飞过去即可(观察第二组数据)。分析:计算几何。设格子边长为a。 首先观察,所有格子的中心为(3xa/2,sqrt(3)ya/2),其中原创 2014-10-09 22:05:42 · 1048 阅读 · 0 评论 -
UVa 10573 - Geometry Paradox
题目:两个相切的小圆r1,r2,同时外切于一个大圆R,已知两小圆的半径r1、r2, 或者过两小圆的被大圆截取的切线段长度t,求大圆面积减去两小圆面积为多少。分析:计算几何。由题意可知如下等式: R = r1 + r2; t^2 = 4(R^2 - (r2-r1)^2)= 4r1r2; 整理,原创 2014-10-29 11:47:33 · 2988 阅读 · 0 评论 -
UVa 121 - Pipe Fitters
题目:在一个矩形中摆放圆,要求每行或每列的圆是相切的,问最多能放多少个。分析:计算几何,数论。首先计算矩形摆放,然后计算交叉摆放(每行相同和相邻行差1个)求最大即可。说明:╮(╯▽╰)╭当成最大摆放WA好几次。#include #include #include #include using namespace std;//题目方式摆放 int getmin(doubl原创 2014-10-19 00:28:10 · 1309 阅读 · 0 评论 -
UVa 12704 - Little Masters
題目:有一個半徑為r的圓,求它的直徑被點(x,y)分成的兩端長度。分析:簡單題,計算幾何。直接求解r-d,r+d即可d=sqrt(x*x+y*y)。說明:╮(╯▽╰)╭。#include #include int main(){ int t; double x, y, r, d; while (~scanf("%d",&t)) while (t --) { scan原创 2015-11-04 14:25:49 · 479 阅读 · 0 评论 -
UVa 11068 - An Easy Task
題目:已知兩條直線,將一條直線關於另一條對稱,求它和鏡像直線的交點。分析:計算幾何。交點一定為兩直線交點,求解即可。說明:十一結束了╮(╯▽╰)╭。#include #include #include const double esp = 1e-6;double dist(double x1, double y1, double x2, double y2){ retu原创 2015-10-08 07:26:39 · 610 阅读 · 0 评论 -
UVa 10215 - The Largest/Smallest Box ...
題目:一個L*W的矩形板子,四個角減去四格x*x的正方形,問使得體積最大和最小的x值。分析:幾何,微積分。列出體積公式求導數,確定x即可。 體積V(x)=(L-2x)(W-2x) x; 導數V‘(x)= LW - 4(L+W)x + 12x^2; 最小值為0和min(L,W)/ 2,最大值為導數為0的左面的解。 說明:注意精度控制。...原创 2015-10-11 14:41:14 · 2590 阅读 · 2 评论 -
UVa 10233 - Dermuba Triangle
題目:如題目圖中,每個三角形中心有一個房子,問你給定兩個編號的房子間距離。分析:計算幾何。按順序找到三角形的位置(行、列)以及方向,計算記錄即可。 首先,利用地推關係找到對應三角形的位置(每層1,3,5,奇數和n^2); 然後,判斷方向,每行的一個朝上,依次交替(倒的高sqrt3/6); 最後,計算兩點間距離即可。原创 2016-01-17 12:11:52 · 677 阅读 · 0 评论 -
UVa 737 - Gleaming the Cubes
題目:求n個立方體的公共部分的體積。分析:計算幾何。直接求出每個維度的最大的最小值和最小的最大值,做差求積即可。說明:注意如果摸個維度是負數,則取0。#include #include int x[1001];int y[1001];int z[1001];int l[1001];int main(){ int n, m, x1, y1, z1, x2, y2, z原创 2016-01-11 09:23:50 · 977 阅读 · 0 评论 -
UVa 10566 - Crossed Ladders
題目:在兩個高樓間搭建兩個梯子,已知梯子長度和焦點到地面的高度,求解建築減的距離。分析:計算幾何。按照比例求解关系式。因为方程不好求解直接利用二分迭代求解即可。 设距离为l,利用相似可以得到 n:c = l:a m:c = l:b,联立比例方程得原创 2016-07-07 11:07:27 · 487 阅读 · 0 评论 -
UVa 12435 - Consistent Verdicts
題目:一個二維平面上有N個人(平面坐標(x,y)表示),他們同時開槍, 問有多少種聽到槍聲的時間。分析:計算幾何。多少種聽到槍聲的時間即是求有多少種不同的點間距離。 計算所有點間的距離,排序,統計找到有多少種距離即可; 聽到自己的槍聲時間為0。說明:sort過了,qsort TLE了╮(╯▽╰)╭。#incl原创 2017-03-23 21:55:08 · 304 阅读 · 0 评论 -
UVa 143 - Orchard Trees
題目:統計一個平面中在一個三角內的整點數目(包括在邊上)。分析:計算幾何。這裡利用叉乘判斷方向,以及在線段上的特判。 先將頂點排序(找左下角,然後利用叉乘),然後判斷在三條直線右側的點滿足題意; 如果點在三邊上進行特判; 這裡有一組比較好的數據:71.67 88.3 45.02 49.09 98.49 0.1說明原创 2017-05-16 16:15:19 · 525 阅读 · 0 评论 -
UVa 10263 - Railway
题目:已知一个点M,以及一个由N条线段构成的曲线(N+1个点),求曲线上到M最近的点坐标。分析:计算几何。点到线段距离。 点到线短距离:1.求点到直线距离; 2.判断垂足是否在线段上:在则为答案;不在则端点为答案; 枚举线段,找到最小距离对应的点即可;说明:原创 2017-09-11 22:14:01 · 527 阅读 · 0 评论 -
UVa 11524 - InCircle
题目:已知一个三角形内切圆的半径r,以及它分三条边的逆时针比例,求三角形面积。分析:计算几何。利用面积公式联立等式计算即可,这三边为k*a,k*b,k*c。 根据内切圆计算面积S△ABC = r*k(a+b+c)/ 2; 根据海伦公式计算面积S△ABC = sqrt(p(p-a)(p-b)(p-c)) { 其中p = k (a+b+c)/ 2原创 2015-05-19 15:30:06 · 1295 阅读 · 0 评论 -
UVa 378 - Intersecting Lines
题目:给你平面上的两条直线,判断两直线关系,如果相交求交点。分析:计算几何。利用斜率判断平行,然后利用叉乘判断共线,最后qiuji原创 2015-04-20 12:33:26 · 2865 阅读 · 0 评论 -
UVa 356 - Square Pegs And Round Holes
题目:在一个2n*2n的网格中间画一个直径为2n-1的圆,问圆内部的格子以及和圆相交的格子个数。分析:计算几何。分别计算出圆和每个整数横坐标的交点(xi,yi)。 ceil(yi)- ceil(yi-1)即为每列的相交格子个数,floor(yi)即为每列圆内格子个数。说明:注意精度(⊙_⊙)。#include #include #include #inc原创 2014-12-06 00:13:43 · 2659 阅读 · 0 评论 -
UVa 587 - There's treasure everywhere!
题目:你开始在坐标原点,想去目的地,给你一系列的指路信息,问目的地的位置和到原点的距离。分析:模拟,计算几何。直接按照顺序计算即可,利用相对坐标求绝对坐标。说明:注意输入格式。#include #include #include #include #include #include using namespace std;int temp;char buf原创 2015-01-13 21:54:02 · 1242 阅读 · 0 评论 -
UVa 12578 - 10:6:2
题目:一个绿色矩形上有个红色的圆,计算红色和绿色的面积比。分析:计算几何,简单题。直接用公式即可。说明:不要用EOF,会TLE。#include #include #include #include #include #include using namespace std;double pi = acos(-1.0);int main(){ int n;原创 2014-12-12 22:01:14 · 982 阅读 · 0 评论 -
UVa 270 - Lining Up
题目:给你平面上n个点,求最多有几个点共线。分析:计算几何。枚举基准点,其他点按基准点极角排序(斜率排序),然后枚举相邻直线判断统计即可。说明:时间复杂度O(n*n*lg(n))。#include #include #include #include #include #include using namespace std;typedef struct pnode原创 2015-03-09 20:28:03 · 1187 阅读 · 0 评论 -
UVa 10180 - Rope Crisis in Ropeland!
题目:平面中有两个点A,B,还有一个圆心在(0,0)半径为R的圆,问连接A,B的不穿过圆的最短弧长。分析:计算几何。分两种情况计算:AB线段不穿过圆,AB线段穿过圆; 1.AB线段不穿过圆:圆心到AB距离大于半径或者AB两点在垂线同侧,且两端点到圆心距离都大于R; 这时直接求AB两点间距离即可; 2.AB线段穿原创 2015-03-28 23:27:43 · 1322 阅读 · 0 评论 -
zoj 2102 - Tables
题目:给你一根木棒的两个端点坐标,以及一些高度相同的圆形桌子的圆心和半径,判断木棒状态。分析:计算几何。如果木棒不掉下来有两种情况:1.重心在桌子上;2.重心两边各有点在桌子上; 分两种情况计算即可; 1. 重心在桌子上,只要判断木棒中心O是否在桌子表示的圆内即可; 2.判断重心两端,将木棒从中间分开,分别判断与圆相交与原创 2015-03-28 22:49:31 · 731 阅读 · 0 评论