摘要:
http://poj.org/problem?id=1755有一个全能运动必有要求运动员完成游泳、骑自行车、跑步,三个项目。冠军为最快完成所有项目的运动员。已知每个运动员的三项速度分别为Vi, Ui, Wi 。裁判能够任意的设置三个项目的路程。问对某个运动员能否设定一个让他必羸的路程设置。当构造一个a,b,c的距离,使得t = a/u + b/v + c/w 时间最小,就可以了 那么就可以转化成 (1 / u1 - 1 / u2) * a + (1 / v1 - 1 / v2) * b + (1 / w1 - 1 / w2) * c < 0 ==> (1 / u1 - 1 / u2 阅读全文
摘要:
http://poj.org/problem?id=3384给定一个多边形,在多边形内放有两个相同的圆,使两个圆尽可能多的覆盖多边形。输出最终两个圆心的位置。最优的放置方法必定是圆内切于两条边,那么把所有的边向内推移半径R的距离,得到新的多边形(也有可能是一个点或一条直线),求出新多边形相距最远的两个顶点,这两个顶点就是圆心的位置了。 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<iostream> 4 #include<cmath> 5 using namespace std; 6 co 阅读全文
摘要:
http://poj.org/problem?id=3525求多边形最大内接圆半径。半平面交+二分查找:把多边形的每条边向内推R的距离,若变幻之后的仍是一个多边形,说明距离R太小了,若无边说明R过大。这边有两个纯几何上的问题,就是如果求直线和平移直线。一、已知两点求直线ax+by+c=0: 已知两点为A(x[i],y[i]),B(x[i+1],y[i+1]),取直线上的另外一点C(x,y),则有: (x-x[i])/(y-y[i])=(x[i+1]-x[i])/(y[i+1]-y[i]); 化解得: x(y[i+1]-y[i])+y(x[i]-x[i+1])+x[i+1... 阅读全文
摘要:
http://poj.org/problem?id=1474和前面做过的两道一样,又是一题判断多边形是否存在核问题,照样粘贴模板。点是顺时针给出。 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<cmath> 4 #include<algorithm> 5 using namespace std; 6 const double MAX =100000000; 7 const double pi =acos(-1.0); 8 const double eps=1e-8; 9 int m,s;1 阅读全文
摘要:
http://poj.org/problem?id=3130和poj3335差不多的题目,都是判断多边形核是否存在问题,只不过这里的点是逆时针给出的,所以模板直接用。 1 #include<cmath> 2 #include<algorithm> 3 using namespace std; 4 5 const double MAX =100000000; 6 const double pi =acos(-1.0); 7 const double eps=1e-8; 8 int m,s; 9 struct node10 {11 double x,y; //注意类型12 阅读全文
摘要:
http://poj.org/problem?id=3335给定一个多边形,判断是否存在核,点顺时针给出。半平面交模板直接用。 1 #include<cmath> 2 #include<algorithm> 3 using namespace std; 4 5 const double MAX =100000000; 6 const double pi =acos(-1.0); 7 const double eps=1e-8; 8 int m,s; 9 struct node10 {11 double x,y; //注意类型12 }tr[110],p[110],q[11 阅读全文
摘要:
http://poj.org/problem?id=1654简单的多边形面积计算,用叉乘公式即可。c++提交 1 #include<stdio.h> 2 #include<stdlib.h> 3 int dir[10][2]={{0,0},{-1,-1},{0,-1},{1,-1},{-1,0},{0,0},{1,0},{-1,1},{0,1},{1,1}}; 4 int main() 5 { 6 int cas,i; 7 int x1,y1,x2,y2; 8 long long area; 9 char s[1000005];10 scanf("%d&quo 阅读全文
摘要:
http://poj.org/problem?id=2074两条平行线段A,B,之间放有数条做为障碍物的线段,所有线段都平行,求B上能看到整个A的最长区间。求出各个障碍物所对应的不能看到整个A的区间,如上图所示区间[a,b]和区间[c,d],剩下的区间即为可看到整个A的区间,求出最长的就可以了。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>#define ep 阅读全文
摘要:
http://poj.org/problem?id=1584给一个多边形,和一个圆形的钉子,判断多边形是否为凸多边形,若为凸多边形判断钉子能否被包含在多边形内。判断是否为凸多边形:相邻的两条边做叉乘i*(i+1)都大于零(假定顶点为逆时针排序,顺时针反之)则为凸多边形。判断圆心是否在多边形内:设o为圆心,s1,s2为相邻顶点,若叉乘(s1s2)*(s1o)都大于零则圆心在多边形内部。(假定顶点为逆时针排序,顺时针反之)之后找圆心到多边形边的最短距离,若最短距离小于圆半径必定不会包含在多边形内。 1 #include<stdio.h> 2 #include<stdlib.h&g 阅读全文
摘要:
http://poj.org/problem?id=3449在平面上给定一些几何图形,求任一个图形会和其它的哪些图形相交。本题并不难,线段相交判断即可。在求解正方形时,已知正方形的两个对角点(x0,y0),(x2,y2)时可由下面的方程求出(x1,y1),(x3,y3)。x1 + x3 = x0 + x2;x1 - x3 = y2 - y0;y1 + y3 = y0 + y2;y3 - y1 =x2 - x0;#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h> 阅读全文