10 2013 档案
c++控制台也能捕捉事件喽,防止误关闭的函数~~
摘要:#include #include bool ctrlhandler( DWORD fdwctrltype ) { switch( fdwctrltype ) { // handle the ctrl-c signal. case CTRL_C_EVENT: printf( "ctrl-c event\n\n" ); _sleep(2000); return( true ); // ctrl-close: confirm that the user wants to exit. case CTRL...
阅读全文
HDU1043 IDA*怒过8数码
摘要:代码放着了,有空研究呵呵// IDA*(迭代式深度搜索)// 把SIZE改成4就可以变成15数码问题/*IDA*算法在是A*与ID算法的结合物,用了A*算法的预估方法和预估值(f=g+h),用了ID算法的迭代深入(最初从Manhatton距离开始)较之A*算法,IDA*算法不需要Open表和Closed表,大大节省了内存空间,而且IDA*算法可以不采用递归式程序设计方法,这样也可以节约堆栈空间。A*,例如目标是D,起始为A,首先初始化将每个节点到D的直线距离赋给节点做代价函数,然后在访问了A之后,马上预测A的子节点B/C,求得B的实际代价为A到B的花费加上B的原始代价.同理取得C的实际代价,之
阅读全文
八数码裸bfs
摘要:#define DeBUG#include #include #include #include #include #include #include #include #include #include #include #include #include #include #includeusing namespace std ;#define zero {0}#define INF 2000000000#define EPS 1e-6typedef long long LL;const double PI = acos(-1.0);inline int sgn(double x){ ..
阅读全文
计算几何之极角排序
摘要:1.利用叉积的正负来作cmp.(即是按逆时针排序). bool cmp(const point &a, const point &b)//逆时针排序 { point origin; origin.x = origin.y = 0; return cross(origin,b,origin,a) bool cmp(const Point& p1, const Point& p2)//360度范围逆时针排序 { complex c1(p1.x,p1.y),c2(p2.x,p2.y); return arg(c1) b.x; if (a.y == ...
阅读全文
HDU3699 A hardaosu Problem
摘要:#define DeBUG#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std ;#define zero {0}#define INF 2000000000#define EPS 1e-6typedef long long LL;const double PI = acos(-1.0);inline int s...
阅读全文
timus1558 最短循环节
摘要:#define DeBUG#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std ;#define zero {0}#define INF 2000000000#define EPS 1e-6typedef long long LL;const double PI = acos(-1.0);...
阅读全文
HDUOJ Pick-up sticks 判断线段相交
摘要:Pick-up sticksTime Limit: 4000/2000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1771Accepted Submission(s): 672Problem DescriptionStan has n sticks of various length. He throws them one at a time on the floor in a random way. After finishing throwing, Stan tries to
阅读全文
POJ TOY叉乘+二分
摘要:#define DeBUG#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std ;#define zero {0}#define INF 2000000000#define EPS 1e-6typedef long long LL;const double PI = acos(-1.0);inline int sgn(double x){return fabs
阅读全文
Ural 1750 Pakhom and the Gully (线段交,最短路)
摘要:#define DeBUG#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std ;#define zero {0}#define INF 200000000#define EPS 1e-6#define MM 1typedef long long LL;inline int sgn(dou...
阅读全文
POJ2187旋转卡壳
摘要:// POJ 2187 Beauty Contest -- Andrew凸包算法 + 点对距离最长(旋转卡壳)// 大意:给你一堆点,让你求出相隔最远的两点距离并输出// 要求:最后结果不需要开平方 应为距离的平方///*test data51 32 14 15 33 5 == 17*/#include #include #include using namespace std;const double Pzero = 0.000001;const int MAXP = 50005;struct Point{ double x, y;//点对应坐标 Point() {} ...
阅读全文
KMP模板
摘要:int b[MAXM]=zero;//根据需要改charint a[MAXN]=zero;int next[MAXM];void GetNext(int len)//得到b的next{ int i,j; for(i=1,j=0;i<=len;) { if(j==0||b[i-1]==b[j-1]) { next[i]=j; j++; i++; } else { j=next[j]; } }}int kmp(int lena,int lenb){ int i,j; for(i=0,j=0;i<lena;) { if(j==0||a[i]==b[j]) { if(a[i]!=b[j].
阅读全文
c语言中的代码优化《转》
摘要:在性能优化方面永远注意80-20原则,即20%的程序消耗了80%的运行时间,因而我们要改进效率,最主要是考虑改进那20%的代码。不要优化程序中开销不大的那80%,这是劳而无功的。第一招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间。比如说字符串的赋值:方法A:通常的办法#define LEN 32char string1 [LEN];memset (string1,0,LEN);strcpy (string1,"This is a example!!");方法B:cons
阅读全文