01 2012 档案
POJ 1066——计算几何初步(此题其实很简单,由于题目看错,导致悲剧)
摘要:这题初看就想到用BFS+计算几何,不过WA了几次后。把题目看了一遍。。。尼玛啊,题目理解错了。。。。。。唉~~~~很水的题被我想复杂了。只要枚举每个边界上的点与终点的线段,最少相交的点数。View Code 1 #include<iostream> 2 #include<queue> 3 #define EPS 1e-8 4 using namespace std; 5 6 struct point { 7 double x, y; 8 }wall[30][2]; 9 10 point tag;11 12 double cross(double x1, double y 阅读全文
posted @ 2012-01-28 22:25 Dev-T 阅读(223) 评论(0) 推荐(0)
POJ 1039——计算几何初步(判断线段与直线相交)
摘要:此题太恶心了。。。。。(开始的时候思路错了,没有考虑到交点可能是拐点,这是其一。其二,就是精度。。。。。。。尼玛啊,这个害我WA了N次)唉~~~~~精度很重要啊。还有一点就是先判断枚举的直线是否合理,即是否在管道内。然后对于每个拐点映射到直线上的Y值是否在管道里,不是则求出X值。接下来枚举就行。View Code 1 #include<iostream> 2 #include<cstdio> 3 #define EPS 1e-8 4 using namespace std; 5 6 struct point { 7 double x, y; 8 point(double 阅读全文
posted @ 2012-01-28 15:37 Dev-T 阅读(332) 评论(0) 推荐(0)
计算几何初步——面积公式,GCD,PICK公式
摘要:这题主要用到PICK公式即:area = I + E/2 - 1.(I为多边形内的格点数,E为边上的格点数,area为多边形面积)用GCD可以算出一条边上的格点-1个,那么3×GCD即为3条边上的所有格点数(因为每个条边的顶点多算了一次)。。。View Code 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 5 struct point { 6 int x, y; 7 }; 8 9 int pick(int area, int num)10 {11 return (area - 阅读全文
posted @ 2012-01-17 16:43 Dev-T 阅读(729) 评论(0) 推荐(0)
计算几何初步——面积公式(POJ 1654)
摘要:这题要注意一点就是数据类型的选择。。。一定要选__int64或者long long,否则很容易出问题。其余的就是直接用公式。。。。。View Code 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #define MAXN 1000004 5 #define END 5 6 using namespace std; 7 __int64 dir[10][2]; 8 struct point { 9 __int64 x, y; 10 };11 12 char data[MAXN];13 阅读全文
posted @ 2012-01-17 14:57 Dev-T 阅读(267) 评论(0) 推荐(0)
计算几何初步——共面判断(FZU1393)
摘要:先判断第三点是否与前2点共线,是的话,这4点肯定共面。反之则以这3点确定一个平面方程,以此判断第四点是否在同一个面上。View Code 1 #include<iostream> 2 #include<iostream> 3 #define EPS 1e-8 4 using namespace std; 5 6 struct point { 7 double x, y, z; 8 point (){} 9 point (double _x, double _y, double _z):x(_x),y(_y),z(_z){} 10 }data[4];11 12 ... 阅读全文
posted @ 2012-01-16 18:07 Dev-T 阅读(584) 评论(0) 推荐(0)
计算几何初步——图论加线段相交。。。。
摘要:这道题很水,不过还是让我纠结了很久,开始数组越界了导致我开的另一个数组的值无故改变,我还以为是编译器的问题,唉~~~~~~~~~~~~此题思路很简单:先求出点与点之间的距离(前提是不与前面的线段规范相交)。然后直接dij过。View Code 1 #include<iostream> 2 #include<cmath> 3 #define EPS 1e-8 4 #define getX(x,y) ((x-1)*4+y+1) 5 #define getY(x,y) ((x-1)*4+y+1) 6 #define MAXN 80 7 #define M 10000000 8 阅读全文
posted @ 2012-01-15 16:19 Dev-T 阅读(283) 评论(0) 推荐(0)
Codeforces Round #102 (Div. 2)——D. Help General
摘要:这题乍一看,没有什么思路。不过画了下图,就大概猜到了。当输入为1行或1列时,那么最大值肯定为max(n,m).当输入为2行或2列时,那么最大值也可分析的出来:max(n,m)/4)*4+2(max(n,m)%4 == 1),max(n,m)/4)*4(max(n,m)%4 == 0),max(n,m)/4)*4+4(其他)这三种情况.当输入为其他时,分析可知如果n*m%2 == 0,则为n*m/2.反之则为n*m/2+1.View Code 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 阅读全文
posted @ 2012-01-14 15:32 Dev-T 阅读(310) 评论(0) 推荐(0)
Codeforces Round #102 (Div. 2)——C. Help Farmer
摘要:这题只要看下题目的数据量就知道肿么做了。1<=n<=10^9。直接暴力枚举其因子,时间复杂度为O(sqrt(n)*(sqrt(sqrt(n))));想想应该能过,还有一点就是最大最小值的求法:最大值:把3个因子中的最大值加1,其余加2.最小值:把3个因子中的最小值加1,其余加2.介个很容易证明。。。。。。还有一点要用__int64View Code 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 5 inline __int64 max(__int64 a, __int64 b 阅读全文
posted @ 2012-01-14 15:26 Dev-T 阅读(279) 评论(0) 推荐(0)
Codeforces Round #102 (Div. 2) ——B. Help Kingdom of Far Far Away 2
摘要:唉~~~格式处理题,水题啊。。。。。。细节还是很重要的View Code 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 5 int main() 6 { 7 char data[110]; 8 char newdata[200]; 9 for (int i(0); i<110; ++i)data[i] = '0';10 cin>>data;11 newdata[0] = '$';12 bool flag = false;13 int c 阅读全文
posted @ 2012-01-14 15:20 Dev-T 阅读(231) 评论(0) 推荐(0)
Codeforces Round #102 (Div. 2) ——A. Help Vasilisa the Wise 2
摘要:呃。。。暴力水题,不解释。View Code 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 5 bool vis[10]; 6 bool law(int x) 7 { 8 return x<=9 && x>=1 && !vis[x]; 9 }10 11 12 int main()13 {14 for (int i(1); i<=9; ++i)vis[i] = false;15 int c1,c2,r1,r2,d1,d2;16 scanf( 阅读全文
posted @ 2012-01-14 15:17 Dev-T 阅读(188) 评论(0) 推荐(0)
POJ 2318(计算几何初步——叉积加2分)
摘要:呃。。。。很经典的题目,由于数据量较大,2分的话会比较省时间。就是问你N个方块里面有多少个点。so easy!View Code 1 #include<iostream> 2 using namespace std; 3 int px,py; 4 struct LINE 5 { 6 int Ux, Uy, Lx, Ly; 7 }line[5002]; 8 int sum[5001]; 9 int n, m;10 11 inline int cross(int x1, int y1, int x2, int y2)12 {13 return x1*y2-y1*x2; ... 阅读全文
posted @ 2012-01-11 17:51 Dev-T 阅读(188) 评论(0) 推荐(0)
POJ 1269(计算几何初步——简单处理解析几何,求直线交点)
摘要:此题给出N组直线,每组2条直线,求出直线是否相交。如果共线则输出LINE,相交则输入点坐标,否则输出NONE.解析几何初中都学过一些,不过写成程序还真是麻烦。情况分成3种:1.看直线的横坐标是否相等。2.看直线的纵坐标是否相等。3.直接用直线公式求解。View Code 1 #include<iostream> 2 #define EPS 1e-8 3 using namespace std; 4 5 bool equal(double x, double y) 6 { 7 return x - y <= EPS && -EPS <= x - y; 8 阅读全文
posted @ 2012-01-11 17:44 Dev-T 阅读(849) 评论(0) 推荐(0)
POJ 3304(计算几何初步——判断线段和直线相交,加上枚举)
摘要:这题有2点要注意:一丶当n==1时,应特判输出YES二丶精度控制,当2点的距离相差小于1E-8,近似看作同一点。View Code 1 #include<iostream> 2 #include<cmath> 3 #define EPS 1e-8 4 #define MAXN 104 5 using namespace std; 6 struct point { 7 double x, y; 8 }; 9 typedef point VECTOR;10 11 struct segment {12 point p[2]; 13 }data[MAXN];14 15 ... 阅读全文
posted @ 2012-01-11 16:15 Dev-T 阅读(279) 评论(0) 推荐(0)
POJ 1410(计算几何初步——判断线段与矩形相交,条件恶心的一B啊,又没说清楚)
摘要:POJ 1410(计算几何初步——判断线段与矩形相交,条件恶心的一B啊,又没说清楚) 阅读全文
posted @ 2012-01-10 17:53 Dev-T 阅读(632) 评论(0) 推荐(0)