摘要:
POJ_3348 先将凸包找到,然后再用叉积算出多边形的面积之后除以50就是结果。#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAXD 10010struct point{ int x, y;}p[MAXD], res[MAXD];int N, P;int cmp(const void *_p, const void *_q){ point *p = (point *)_p, *q = (point *)_q; if(p->y == q->y) return p-> 阅读全文
摘要:
POJ_2007 这个题目本质上还是求凸包,然后按题目指定顺序输出各个点即可。#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>#define MAXD 60#define zero 1e-8struct point{ int x, y;}p[MAXD], res[MAXD];int N, P;int cmp(const void *_p, const void *_q){ point *p = (point *)_p, *q = (point *)_q; i 阅读全文
摘要:
HDU_1392 这个题目比较疑惑的一点就是当N==2时,只要输出两点间距离即可,而不是输出距离的两倍。 至于为什么求凸包的周长就可以,我们不妨用反证法去证明:凸包上点绳子必然要经过的,同时我们找不到一种更优的结果使得绳子的某一部分不是在凸包的边长上。因而我们只要求得凸包并计算其周长即可。 这个算是我学习graham凸包算法之后的处女作了。#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>#define MAXD 110#define zero 1e-8str 阅读全文