
ACM
文章平均质量分 50
guoxianzhuang
青青子衿,悠悠我心,但为君故,沉吟至今!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ1269
直线相交,平行,重合模板。。 一、判断是否共线 相当于判断三点是否共线,叉积等0是即为共线。二、判断是否平行 设向量A=(a,b) 向量B=(c,d) 若向量A与B平行则a/c=b/d;三、求交点 这里也用到叉积的原理。假设交点为p0(x0,y0)。则有: (p1-p0)X(p2-p0)=0 (p3-p0)X(p2-p0)=0 展开后即是 (y1-y2原创 2012-11-25 22:42:09 · 669 阅读 · 0 评论 -
poj1654叉积求多边形面积
叉积求多边形面积 题意:以二维坐标的原点为起点,每次只走一步,每步只走根号2的长度或1的长度,且每步走的方向八个:上/下/左/右/左上/左下/右上/右下,而且每个方向用一个数字代替,1 2 3 4 6 7 8 9,5代表终止,即最后一步回到了原点,构成了多边形。现在给定一个以数字组成的字符串,字符串的每一个数字字符代表了走的方向,问走的路线构成的多边形的面积是多少? 算原创 2015-03-25 19:19:00 · 822 阅读 · 0 评论 -
三出口函数:解决计算几何中的精度问题
一个三出口函数很地解决精度的问题。 int dblcmp(double d) { if(fabs(s) return 0; return (d>0)?1:-1;//对于给定的精度的左右偏离方向。。 }原创 2015-03-25 19:10:48 · 528 阅读 · 0 评论 -
图论专题 二分图
图论专题 二分图 二分图:二分图是这样一个图,它的顶点可以分类两个集合X和Y,所有的边关联的两个顶点恰好一个属于集合X,另一个属于集合Y。 二分图匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配。 最大匹配:图中包含边数最多的匹配称为图的最大匹配。 完美匹配:如果所有点都在匹配边上,则称这个最大匹配是完美匹配。转载 2015-03-25 17:50:44 · 696 阅读 · 0 评论 -
计算几何:非规范相交的模板
计算几何:非规范相交的模板 int segcross(point a,point b,point c,point d) { double s1,s2,s3,s4; int d1,d2,d3,d4; d1=dblcmp(s1=cross(a,b,c)); d2=dblcmp(s2=cross(a,b,d)); d3=dblcmp(s3=cross(c,d,a)); d4=d原创 2015-03-25 17:54:28 · 919 阅读 · 0 评论 -
hdu1392标准求凸包模板
标准求凸包模板 #include #include #include #include using namespace std; #define N 103 #define EPS 1e-8 struct point { double x; double y; }p[N]; point cur; int s[N]; int top; int dblcmp(doubl原创 2015-03-25 19:09:26 · 553 阅读 · 0 评论 -
poj1654叉积求多边形面积
叉积求多边形面积 #include int a[10][2]={{0,0},{-1,-1},{0,-1},{1,-1},{-1,0},{0,0},{1,0},{-1,1},{0,1},{1,1}};//方向向量,想起了广搜的方向向量。。。 int main(){ __int64 area; int i,n; char ch; int x1,y1,x2,y2;原创 2015-03-25 19:17:53 · 563 阅读 · 0 评论 -
多边形重心模板
多边形重心模板 #include #include #include using namespace std; struct point { double x; double y; }; //求多边形的重心算法 //说明: //求多边形重心并不是简单的把求三角形的重心公式推广就行了 //我的算法是在平面上取一点(一般取原点, 这样可以减少很多计算, 而且原创 2015-03-25 17:52:33 · 650 阅读 · 0 评论 -
叉积模板
double det(double x1,double y1,double x2,double y2)//经常用的叉积模板 { return x1*y2-x2*y1; } double cross(point a,point b,point c)//经常用的叉积模板。。 { return det(a.x-c.x,a.y-c.y,b.x-c.x,b.y-c.y);原创 2015-03-25 19:13:13 · 593 阅读 · 0 评论 -
poj1269直线相交,平行,重合模板
直线相交,平行,重合模板。。 一、判断是否共线 相当于判断三点是否共线,叉积等0是即为共线。二、判断是否平行 设向量A=(a,b) 向量B=(c,d) 若向量A与B平行则a/c=b/d;三、求交点 这里也用到叉积的原理。假设交点为p0(x0,y0)。则有: (p1-p0)X(p2-p0)=0 (p3-p0)X(p2-p0)=0 展开后即是原创 2015-03-25 19:14:42 · 708 阅读 · 0 评论 -
计算几何:规范相交模板
规范相交模板 struct point { double x,y; }; double det(double x1,double y1,double x2,double y2) { return x1*y2-x2*y1; } double cross(point a,point b,point c) { return det(a.x-c.x,a.y-c.y,b.x-c.x,b原创 2015-03-25 19:01:18 · 796 阅读 · 0 评论 -
计算几何算法概览
计算几何算法概览 超全的计算几何的算法啊。。。。真是老牛啊。。。。 http://dev.gameres.com/Program/Abstract/Geometry.htm http://dev.gameres.com/Program/Abstract/Geometry.htm http://dev.gameres.com/Program/Abstract/Geometry.htm原创 2015-03-25 19:07:20 · 600 阅读 · 0 评论 -
poj2484----简单博弈
// Creat By 郭仔 2015年3月29日9:08:33 #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2015-03-29 09:12:11 · 1165 阅读 · 0 评论 -
poj1094----拓扑排序
// Creat By 郭仔 2015年3月29日9:12:52 //画图演示一遍就能很好的理解了 /*题意:输入n, m,n表示26个大写字母组成的字母表中前n个字母,m表示将输入m对字母的大小关系式, (ch1 (1)如果出现ch1 ch2则表示这n个字母是inconsistency。 (2)能确定有惟一这n个的字母的拓扑序。 */ //(3)不能根据输入的原创 2015-03-29 09:15:33 · 707 阅读 · 0 评论 -
pku2528----区间染色成段更新
// Creat By 郭仔 2012年3月29日10:16:59 区间染色的变形,不过比区间染色问题要难一些~ 用到区间染色成段更新,hash,离散化,蛋疼的提 题意:在墙上贴海报,海报可以互相覆盖,问最后可以看见几张海报 思路:这题数据范围很大,直接搞超时+超内存,需要离散化: 离散化简单的来说就是只取我们需要的值来用,比如说区间[1000,2原创 2015-03-29 10:20:32 · 1438 阅读 · 0 评论 -
pku3468----成段更新区间求和
小心越界 每次在修改节点的sum值时,如果每次都下放到叶子节点,那么复杂度会变成nlogn,还不如直接暴力(树状数组还sqrt(n)呢,虽然我不会),而且对于某些修改一大段值的问题,用线段树动态维护的时候,如果找到了要修改的大区间,可以直接在这个大区间上标记,然后改掉sum值,等下次修改或者查询时再修改或者查询它的标记值,这样就可以做到每次查询或修改都为logn,大大节省了时间。 #inclu原创 2015-03-27 18:11:25 · 742 阅读 · 0 评论 -
计算几何:点积的模板
点积的模板 double dotdet(double x1,double y1,double x2,double y2) { return x1*x2+y1*y2; } double dot(point a,point b,point c) { return dotdet(a.x-c.x,a.y-c.y,b.x-c.x,b.y-c.y); } int betweenCmp(poi原创 2015-03-25 19:04:11 · 708 阅读 · 0 评论 -
判断两线段相交的模板
判断两线段相交的模板 蛋疼死了,编了半天还是WA,。 # include # include struct Node{ double x,y; }point1[105],point2[105]; double Cross(Node p1,Node p2,Node p3) { return (p2.x-p1.x)*(p3.y-p1.y)-(p2.y-p1.y)*(p3.原创 2015-03-25 19:06:15 · 579 阅读 · 0 评论 -
POJ1654叉积求多边形面积
poj1654叉积求多边形面积 叉积求多边形面积 题意:以二维坐标的原点为起点,每次只走一步,每步只走根号2的长度或1的长度,且每步走的方向八个:上/下/左/右/左上/左下/右上/右下,而且每个方向用一个数字代替,1 2 3 4 6 7 8 9,5代表终止,即最后一步回到了原点,构成了多边形。现在给定一个以数字组成的字符串,字符串的每一个数字字符代表了走的方向,问走的路线构成的多边形的面积原创 2012-11-24 20:02:42 · 1823 阅读 · 0 评论 -
二分匹配算法总结
一、二分图最大匹配 二分图最大匹配的经典匈牙利算法是由Edmonds在1965年提出的,算法的核心就是根据一个初始匹配不停的找增广路,直到没有增广路为止。 匈牙利算法的本质实际上和基于增广路特性的最大流算法还是相似的,只需要注意两点:(一)每个X节点都最多做一次增广路的起点;(二)如果一个Y节点已经匹配了,那么增广路到这儿的时候唯一的路径是走到Y节点的匹配点(可以转载 2012-11-21 22:04:01 · 1409 阅读 · 0 评论 -
hdu1394 暴力解法~
越来越不行了,菜屎了~~ #include #include #include int t[5003]; int main() { int n,i,j; int min,sum; while(scanf("%d",&n)!=EOF) { sum=0; for(i=0;i {原创 2012-11-11 21:25:20 · 819 阅读 · 1 评论 -
POJ2348
不知道怎么了,错的要死~~泥煤的蛋疼 #include #include #include #include //#define max(a,b) a>b?a:b //#define min(a,b) a>b?b:a using namespace std; int main(void){ int k,t,i,j; int m,n; int large,smale;原创 2012-11-12 18:31:27 · 519 阅读 · 0 评论 -
经常用的叉积模板!
经常用的叉积模板 double det(double x1,double y1,double x2,double y2)//经常用的叉积模板 { return x1*y2-x2*y1; } double cross(point a,point b,point c)//经常用的叉积模板。。 { return det(a.x-c.x,a.y-c.y,b.x-原创 2012-11-26 21:25:27 · 797 阅读 · 0 评论 -
三出口函数解决计算几何精度问题!
。。。。熟能生巧哦。。。。 一个三出口函数很地解决精度的问题。 int dblcmp(double d) { if(fabs(s) return 0; return (d>0)?1:-1;//对于给定的精度的左右偏离方向。。 }原创 2012-11-27 22:04:45 · 540 阅读 · 0 评论 -
hdu1339
#include #include int main(int argc, char *argv[]) { int i,j,m,n,t; int p; scanf("%d",&t); for(i=0;i scanf("%d",&n); if(n%2!=0) { printf("%d %d\n",n,0); continue; } el原创 2012-11-13 19:10:22 · 464 阅读 · 0 评论 -
2080用的Floy果断超时,留个纪念哦.cpp
#include #include #define max 1009 #define MAX 100000000 int map[max][max]; int d[max][max]; int main(int argc, char *argv[]) { int n,m,i,j,k,s,t; int mx; int a,b,c; while(scanf("%d%d%原创 2012-11-13 19:11:24 · 746 阅读 · 1 评论 -
1869最短路径,弗洛伊的算法.cpp
#include #include #include #define max 2 int map[105][105]; int d[105][105]; int main(int argc, char *argv[]) { int n,i,j,k,t,m; int a,b; while(scanf("%d%d",&n,&m)!=EOF){ for(i=0;i原创 2012-11-13 19:12:06 · 543 阅读 · 0 评论 -
hdu1412
#include #include #include #include using namespace std; int cmp(int a,int b){ return a } int main(int argc, char *argv[]) { int a,b,m,n,i,j; int c1[20000]; while(scanf("%d%d",&m,&n)!=原创 2012-11-13 19:01:46 · 487 阅读 · 0 评论 -
HDU1564
博弈找规律的题目,不好找啊~~ //蛋疼的题目,博弈题但没想到规律竟是如此简单,不好发现啊,原来博弈题有的时候就是找规律的啊 #include #include #include #include using namespace std; int main(int argc, char *argv[]) { int m,n,i,k; while(cin>>n){ if原创 2012-11-15 14:13:27 · 646 阅读 · 0 评论 -
POJ1740
/*寻找必败态,若是一对一对相等的情况则是必败态,先走者必败。其余情况按照最有策略则为必胜态 先走者必胜 */ #include #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { bool pile[102]; in原创 2012-11-15 14:12:24 · 505 阅读 · 0 评论 -
经典博弈!
转载:http://blog.youkuaiyun.com/bool_isprime/archive/2010/08/10/5801934.aspx pku2234 Matches game!!!!! hdu1846 brave game. if(n%(m+1)==0)n是必败点 !!!!!! pku2484 A Funny Game. if(n>=3)n是必败点 !!!!!! hdu1851 A S转载 2012-11-17 22:23:43 · 485 阅读 · 0 评论 -
POJ2484
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main原创 2012-11-17 22:05:52 · 550 阅读 · 0 评论 -
杭电1086
hdu1086判断两线段相交的模板 # include # include struct Node{ double x,y; }point1[105],point2[105]; double Cross(Node p1,Node p2,Node p3) { return (p2.x-p1.x)*(p3.y-p1.y)-(p2.y-p1.y)*(p3.x-p1.x); } d原创 2012-11-18 22:38:50 · 620 阅读 · 0 评论 -
计算几何:点积模板
计算几何:点积的模板 点积的模板 double dotdet(double x1,double y1,double x2,double y2) { return x1*x2+y1*y2; } double dot(point a,point b,point c) { return dotdet(a.x-c.x,a.y-c.y,b.x-c.x,b.y-c.y); } in原创 2012-11-18 22:41:07 · 594 阅读 · 0 评论 -
计算几何:规范相交模板
规范相交模板 struct point { double x,y; }; double det(double x1,double y1,double x2,double y2) { return x1*y2-x2*y1; } double cross(point a,point b,point c) { return det(a.x-c.x,a.y-c.y,b.x-c.原创 2012-11-18 22:42:16 · 511 阅读 · 0 评论 -
计算几何:非规范相交模板
非规范相交的模板 int segcross(point a,point b,point c,point d) { double s1,s2,s3,s4; int d1,d2,d3,d4; d1=dblcmp(s1=cross(a,b,c)); d2=dblcmp(s2=cross(a,b,d)); d3=dblcmp(s3=cross(c,d,a)); d4=db原创 2012-11-19 21:55:39 · 602 阅读 · 0 评论 -
计算几何:多边形重心模板
多边形重心模板 #include #include #include using namespace std; struct point { double x; double y; }; //求多边形的重心算法 //说明: //求多边形重心并不是简单的把求三角形的重心公式推广就行了 //我的算法是在平面上取一点(一般取原点, 这样可以减少很多计算, 而且使思路更清晰原创 2012-11-20 22:24:16 · 694 阅读 · 0 评论 -
HDU1253-胜利大逃亡
好久不A题了,时间也越来越少了,看看以前的题目,温故而知新! 题目描述:http://acm.hdu.edu.cn/showproblem.php?pid=1253 Input 输入数据的第一行是一个正整数K,表明测试数据的数量.每组测试数据的第一行是四个正整数A,B,C和T(1 特别注意:本题的测试数据非常大,请使用scanf输入,我不能保证使用cin能不超时.在原创 2015-08-13 22:26:19 · 2258 阅读 · 0 评论