摘要:
2992 -- Divisors 筛素数,分解质因数。代码如下: 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 typedef long long LL; 9 const int N = 444;10 int prm[N >> 2], pn, pid[N], pv[N];11 bool np[N];12 13 void getPrm() {14 np[0] = np[1] = true;15 prm[pn = 0] = 2, pid[2] = pn++;16 ... 阅读全文
摘要:
3862 -- AsteroidsACM-ICPC Live Archive 用给出的点求出凸包的重心,并求出重心到多边形表面的最近距离。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 const double EPS = 1e-10; 10 const int N = 333; 11 inline int sgn(double x) { return (x > EPS) - (x = 0; j--) { 95 ... 阅读全文
摘要:
Problem - 3662 题意很简单,构造三维凸包,求凸包有多少个面。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 const double EPS = 1e-10; 10 const int N = 333; 11 inline int sgn(double x) { return (x > EPS) - (x = 0; j--) { 95 if (outside(i, j)) { 96 ... 阅读全文
摘要:
3528 -- Ultimate Weapon 一道三维凸包的题目,题目要求求出三维凸包的表面积。看懂了网上的三维凸包的代码以后,自己写的代码,跟网上的模板有所不同。调了一个晚上,结果发现错的只是数组开太小。_(:з」∠)_代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 const double EPS = 1e-10; 10 const int N = 555; 11 inline int sgn(double x) { ret... 阅读全文
摘要:
Problem - 4179 坑了我一个晚上的SP题。 题意是,给出若干空间中的点,给出其中某些点之间是有直线线段路径相连的。要求求出一条从s开始到t结束的路径,它的难度是d。难度的计算是空间线段两点的高度差乘以100再除以投影到xOy平面上线段的长度。难度是d的路径的定义是路径中,经过的线段的难度最大是d。 其实比较容易可以想到的是枚举难度最大的线段的,同时构建难度小于等于给定值的正图和反图。正图是用来求出起点s到各个顶点的最短距离,因为是有向图,所以求出t到各个顶点的最短距离是要用到反图来求的。然后就将两条路径拼接到被枚举的线段上。 中间错的好多的是,写之前还想到要用反图求t到各个... 阅读全文
摘要:
ZOJ :: Problems :: Show Problem1689 -- 3002 Rubbery 这题是从校内oj的几何分类里面找到的。 题意不难,就是给出一个区域(L,W),这个区域里面有很多多边形,多边形的边都是和x/y轴平行的。一个射线源在(L,0),射线是走平行于x/y轴的路径的。它们可以贴着多边形的边经过,不过不能穿过区域中的多边形,甚至不能从有至少一个交点的两条边之间穿过(区域边沿也一样)。射线只能向着x减少或者y增大的方向行走,问有多大的区域是没有射线经过的,不包括多边形区域。 做法就是,先将区域离散化成若干矩形,然后将每一个矩形看成一个点,构出图以后bfs射线就可以... 阅读全文
摘要:
2464 -- Brownie Points IIProblem - 1156 hdu分类线段树的题。题意是,给出一堆点的位置,stan和ollie玩游戏,stan通过其中一个点画垂线,ollie通过在垂线上的点画一条平行线。他们的得分是stan在一三象限中有多少点,ollie在二四象限中共有多少点。在平行线和垂线的点不算任何人的。 开始的时候以为暴力二维线段树,结果发现点的数目也太庞大了。后来想了一想,只是统计这么几个区域,逐个插点就可以的嘛。用一个树状数组存下y坐标中相应位置的点的个数,向前向后做两次差点即可! 错了一次忘记将答案unique,然后就AC了。代码及debug的数据如下... 阅读全文
摘要:
1263 -- Reflections 简单计算几何。题目给出射线以及若干个不相交的圆,求出射线会在哪些圆上反弹,依次写出反弹球的编号。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 using namespace std; 9 10 const double EPS = 1e-10; 11 template T sqr(T x) { return x * x;} 12 inline int sgn(double x) { return (x > EPS)... 阅读全文
摘要:
Problem - 4476 题意是,给出若干绳子,对同一根绳子只能切割一次,求出最多能获得多少长度相同的绳子。 代码中,s是最大切割长度,而当前切割长度为t/2.代码如下: 1 #include 2 #include 3 #include 4 #include 5 6 using n... 阅读全文
摘要:
Problem - 1286用容斥原理做的代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 const int N = 33333;10 11 int last[N];12 void pre() {13 last[1] = 1;14 for (int i = 2; i fac;25 void getFac(int n) {26 fac.clear();27 while (n > 1) {28 fac.pus... 阅读全文