07 2013 档案
HDU1848取牌博弈与模板
摘要:出处http://blog.csdn.net/mishifangxiangdefeng/article/details/7187215Fibonacci again and againTime Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3408Accepted Submission(s): 1412Problem Description任何一个大学生对菲波那契数列(Fibonacci numbers)应该都不会陌生,它是这样定义的:F(1)=1;F
阅读全文
HDU1791三点确定一个圆
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 using namespace std ;15 #ifdef DeBUG16 #define bug assert17 #else18 #define bug //19 #endif20 #define zero {0}21 #define INF 200000000022 #de...
阅读全文
筛选法求素数
摘要:C++ Code123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051筛法素数产生器语法:result=prime(inta[],intn);参数:a[]:用于返回素数的数组n:产生n以内的素数,按升序放入a[]中返回值:n以内素数的个数注意:其中W[],B[]已知,W[i]>0且W[i]与W[j]互质,求a源程序:intprime(inta[],intn){inti,j,k,x,num,*b;n++;n/=2;b=(int*)malloc(sizeof(i
阅读全文
最小生成树算法合集
摘要:1 kruskal 1 struct seg 2 { 3 int a; 4 int b; 5 int p; 6 }; 7 seg v[100];//边的最大值 8 int father[30];//最大限为点的最大值 9 int cmp(seg a,seg b)10 {11 return a.pD[j])29 {30 min=D[j];31 k=j;32 }33 }34 visit[k]=1;35 len...
阅读全文
HDU1875prim算法求最小生成树
摘要:畅通工程再续Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10363Accepted Submission(s): 3152 Problem Description相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现。现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政府决定实现百岛湖的全畅通!经过考察小组RPRush对百岛湖的情况充分了解后,决定在符合条件的小岛间建
阅读全文
计算几何公式集锦
摘要:1---计算多边形重心方法:(1)划分多边形为三角形:以多边形的一个顶点V为源点(V可取输入的第一个顶点),作连结V与所有非相邻顶点的线段,即将原N边形或分为(N-2)个三角形;(2)求每个三角形的重心和面积:设某个三角形的重心为G(cx,cy),顶点坐标分别为A1(x1,y1),A2(x2,y2),A3(x3,y3),则有cx = (x1 + x2 + x3)/3.同理求得cy。求面积的方法是s = ( (x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1) ) / 2,当A1,A2,A3顺时针排列时取-,否则取正(此定理不证)。事实上,在求每个三角形时.
阅读全文
母函数模板
摘要:HDU1398#includeusing namespace std;int main(){ //freopen("C:\\Users\\Sky\\Desktop\\1.in","r",stdin);//PLEASE DELETE IT!!!!!!!!!!!!!!!!!!!!!!!! int a[350],b[350],i,j,k,n; while(cin>>n&&n) { for(i=0; i#includeconst int N=102;int min[N],max[N],c1[N],c2[N];int main(){ i
阅读全文
常用函数集锦
摘要:atof(将字符串转换成浮点型数)atoi(将字符串转换成整型数)atol(将字符串转换成长整型数)strtod(将字符串转换成浮点数)strtol(将字符串转换成长整型数)strtoul(将字符串转换成无符号长整型数)toascii(将整型数转换成合法的ASCII 码字符)toupper(将小写字母转换成大写字母)tolower(将大写字母转换成小写字母)
阅读全文
HDU1212加深下对取模运算的理解
摘要:Big NumberTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3771Accepted Submission(s): 2586 Problem DescriptionAs we know, Big Number is always troublesome. But it's really important in our ACM. And today, your task is to write a program to cal
阅读全文
HDU1022 queue和vector模拟
摘要:Train Problem ITime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 15571Accepted Submission(s): 5772 Problem DescriptionAs the new term comes, the Ignatius Train Station is very busy nowadays. A lot of student want to get back to school by train(becau
阅读全文
SGU328a coloring game博弈sg函数
摘要:C -A Coloring GameTime Limit:500MSMemory Limit:65536KB64bit IO Format:%I64d & %I64uSubmitStatusPracticeSGU 328DescriptionTwo players play a graph coloring game. They make moves in turn, first player moves first. Initially they take some undirected graph. At each move, a player can color an uncol
阅读全文
HDU1527威佐夫博弈
摘要:/*(威佐夫博弈)(http://baike.baidu.com/view/1952620.htm) 这不是我写的啊!1、在一堆石子中取走任意多颗;2、在两堆石子中取走相同多的任意颗;约定取走最后一颗石子的人为赢家,求必胜策略。两堆石头地位是一样的,我们用余下的石子数(a,b)来表示状态,并画在平面直角坐标系上。和前面类似,(0,0)肯定是 P 态,又叫必败态。(0,k),(k,0),(k,k)系列的节点肯定不是 P 态,而是必胜态,你面对这样的局面一定会胜,只要按照规则取一次就可以了。再看 y = x 上方未被划去的格点,(1,2)是 P 态。k > 2 时,(1,k)不是 P 态,比
阅读全文
HDU1410概率的对数优化
摘要:出处http://www.clanfei.com/2012/04/772.html 1 #include 2 #include 3 int main() 4 { 5 int HP1,HP2,AP1,AP2,N1,N2 ; 6 while(scanf("%d%d%d%d",&HP1,&HP2,&AP1,&AP2)!=EOF) 7 { 8 double ans=0,tmp=0 ; 9 N1=(HP2-1)/AP1+1 ;10 N2=(HP1-1)/AP2+1 ;11 ans=pow(0.5,N1);12 ...
阅读全文
HDU1850尼姆博弈
摘要:Being a Good Boy in Spring FestivalTime Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3083Accepted Submission(s): 1789 Problem Description一年在外 父母时刻牵挂 春节回家 你能做几天好孩子吗 寒假里尝试做做下面的事情吧陪妈妈逛一次菜场 悄悄给爸爸买个小礼物 主动地 强烈地 要求洗一次碗 某一天早起 给爸妈用心地做回早餐如果愿意 你还可以和爸妈说 咱们玩个小游.
阅读全文
一个超全的头文件
摘要://STATUS:C++_AC_500MS_1012KB#include #include #include //#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;//using namespace __gnu_cxx;//define#define pii pair#define m
阅读全文
HDU2141还是二分查找
摘要:Can you find it?Time Limit: 10000/3000 MS (Java/Others)Memory Limit: 32768/10000 K (Java/Others) Total Submission(s): 7898Accepted Submission(s): 2052 Problem DescriptionGive you three sequences of numbers A, B, C, then we give you a number X. Now you need to calculate if you can find the three numb
阅读全文
数学公式集锦
摘要:1错排公式HDU1465a[1]=0;a[2]=1;a[i]=(i-1)*(a[i-1]+a[i-2]);2----求卡特兰数令h(0)=1,h(1)=1,catalan数满足递推式[1]:h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)例如:h(2)=h(0)*h(1)+h(1)*h(0)=1*1+1*1=2h(3)=h(0)*h(2)+h(1)*h(1)+h(2)*h(0)=1*2+1*1+2*1=5另类递推式[2]:h(n)=h(n-1)*(4*n-2)/(n+1);递推关系的解为:h(n)=C(2n,n)/(n+1)
阅读全文
HDU1253胜利大逃亡
摘要:bfs和剪枝胜利大逃亡Time Limit: 4000/2000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 21195Accepted Submission(s): 8381 Problem DescriptionIgnatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知
阅读全文
HDU1166树状数组
摘要:敌兵布阵Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 28493Accepted Submission(s): 12198 Problem DescriptionC国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地
阅读全文
求最长不连续递减子列数
摘要:HDU1257这个思想挺好 1 #include 2 #include 3 int main() 4 {// freopen("C:\\Users\\Sky\\Desktop\\1.in","r",stdin); 5 int n,i,j,x,m,dp[1005]; 6 while(scanf("%d",&n)!=EOF&&n) 7 { 8 memset(dp,0,sizeof(dp)); 9 dp[1]=0;m=0;10 for(i=1;im){dp[++m]=x;}//所有最后一个元素都不比x大,x为新的子列
阅读全文
容器使用之vector
摘要:出处:http://blog.csdn.net/edify/article/details/4035243C++内置的数组支持容器的机制,但是它不支持容器抽象的语义。要解决此问题我们自己实现这样的类。在标准C++中,用容器向量(vector)实现。容器向量也是一个类模板。 标准库vector类型使用需要的头文件:#include 。vector 是一个类模板。不是一种数据类型,vector是一种数据类型。Vector的存储空间是连续的,list不是连续存储的。一、 定义和初始化 vector v1; //默认v1为空,故下面的赋值是错误的v1[0]=5; vectorv2(v1); 或v2=v
阅读全文
hdu1231最大连续子序列DP/两点法
摘要:最大连续子序列Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 15168Accepted Submission(s): 6624 Problem Description给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 6 #include 7 #define MAX 10005 8 using namespace std; 9 10 int main()..
阅读全文
容器之set使用
摘要:D -Problem DTime Limit:2000MSMemory Limit:0KB64bit IO Format:%lld & %lluSubmitStatusDescriptionWith water from the stream Galadriel filled the basin to the brim, and breathed on it, and when the water was still again she spoke. 'Here is the Mirror of Galadriel,' she said. 'I have bro
阅读全文
HDU1059 DP模板
摘要:#includeint dp[120005];int V,v;void bag01(int c,int w)//01背包{for(v=V; v>=c; v--)if(dp[v]=V)bagall(c,w);else{int k=1;while(k<p){bag01(c*k,w*k);p=p-k;k=k+k;}bag01(c*p,w*p);}}int main(){int n[8];int i,sum,p=0;while(scanf("%d%d%d%d%d%d",&n[1],&n[2],&n[3],&n[4],&n[5],&
阅读全文
HDU1175连连看 广度优先搜索BFS
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 using namespace std ; 15 #ifdef DeBUG 16 #define bug assert 17 #else 18 #define bug // 19 #endif 20 #define zero {0} 21 int dir...
阅读全文
HDUOJ2648 容器的使用之map
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 using namespace std ;15 #ifdef DeBUG16 #define bug assert17 #else18 #define bug //19 #endif20 #define zero {0}21 struct shop22 {23 string...
阅读全文
HDU2094容器使用之set
摘要:1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int main() 7 {//freopen("C:\\Users\\Sky\\Desktop\\1.in","r",stdin); 8 int n,i; 9 string s1,s2;10 seta,b;11 set::iterator it;12 while(cin>>n,n)13 {14 for(i=1;i>s1>>s2;17 a.insert(s1);18 ...
阅读全文
HDUOJ 1392凸包graham算法
摘要:#include #include #include #include #include using namespace std;const int Max = 1100;struct Point{ int x; int y;};int num;Point p[Max]; ///原始点集Point ch[Max]; ///凸包点集///p0p1叉乘p0p2int xmult(const Point &p0, const Point &p1, const Point &p2){ return (p1.x-p0.x)*(p2.y-p0.y) - (p2.x-p0.x)*(p
阅读全文
HDU1292 i个不同元素分成j堆的分法
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include11 #include12 using namespace std ;13 #ifdef DeBUG14 #define bug assert15 #else16 #define bug //17 #endif18 19 int main()20 {21 #ifdef DeBUG22 freopen("C:\\Users\\Sky\\D...
阅读全文
快速幂,就当个模板了
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include11 #include12 using namespace std ;13 #ifdef DeBUG14 #define bug assert15 #else16 #define bug //17 #endif18 int pow3(int a, int b)19 {20 int r = 1, base = a;21 while(b != 0)...
阅读全文
HDU1086判断线段相交
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 using namespace std ; 13 #ifdef DeBUG 14 #define bug assert 15 #else 16 #define bug // 17 #endif 18 #define eps 1e-6 19 struct segment 20 { 21 double x...
阅读全文
高效大数模板
摘要:1 #include 2 #include 3 4 using namespace std; 5 6 const unsigned int MAX = 10000; //整型数组的最大长度 7 const long long WIDTHMAX = 1000000000; //整型数组val[MAX]的元素上限 8 const unsigned int WIDTH = 9; //输出整型数组val[MAX]的元素时的格式宽度,即整型数组val[MAX]的元素的最多位数 9 10 typedef struct node 11 { 12 long long ...
阅读全文
HDUOJ2298三分加二分
摘要:首先这题是一道物理题,需要我们根据题意抽象一个函数出来。对物体的运动作分解后,可以得到:f(t)=x*tan(t)-g*x*x/(v*cos(t))^2/2,其中t表示v与x轴正向的夹角(弧度),f(t)表示物体的运动轨迹与直线x0=x的交点纵坐标。分析后可以得到该函数在区间(0,π/2)上先增后减,所以我们可以在该区间上三分,求出使函数取得极大值的角度t0。若f(t0)#include#includeusing namespace std;const double eps=1.0e-9;const double PI=acos(-1.0);const double g=9.8;double
阅读全文
HDUOJ PIE二分查找
摘要:#include #include #include #include #include #include #include #include #include #include#includeusing namespace std ;#ifdef DeBUG#define bug assert#else#define bug //#endif#define eps 1e-6int m,n;double pie[11000];bool test(double x)//判断是否每个都分成出x体积大的蛋糕的块数>=人数,=人数那最好了^_^{int sum=0;for(int i=0;i=(
阅读全文
HDUoj 3714三分查找
摘要:#include #include #include #include #include #include #include #include #include #include#includeusing namespace std ;#ifdef DeBUG#define bug assert#else#define bug //#endif#define eps 1e-10double a[10010],b[10010],c[10010];int m;inline double f(double x){int i;double maxx=a[0]*x*x+b[0]*x+c[0];for(i
阅读全文
c++map使用方法
摘要:Map是c++的一个标准容器,它提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map构造函数;mapmapstring; mapmapint;mapmapstring; mapmapchar;mapmapchar; mapmapint; 2. map添加数据;map maplive; 1.maplive.insert(pair(102,"aclive"));2.maplive.insert(map::value_type(321,"hai"));3, maplive[112]=&quo
阅读全文
HDUOJ 1728逃离迷宫dp剪枝
摘要:#include using namespace std;#define inf 0x3fffffff#define M 105//1、wan用于转弯数剪枝;2、step用于步数剪枝,就不用vis标记访问了int r, c, ex, ey, k, wan[M][M];char mapp[M][M];int x_move[4] = {-1, 0, 1, 0};int y_move[4] = {0, 1, 0, -1};bool flag;int times=0;/*void showmap(int x,int y)//用这个可以打印出来研究{int i,j;printf("******
阅读全文
HDUOJ 2553n皇后问题
摘要:N皇后问题Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5382Accepted Submission(s): 2454Problem Description在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。Input共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。Outpu
阅读全文
HDUOJ 2544最短路 自己第一次写出,纪念
摘要:最短路Time Limit: 5000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 20910Accepted Submission(s): 8939Problem Description在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?Input输入包括多组数据。每组数据第一行是两个整数N、M(N#include #
阅读全文
HDUOJ 2069 COINchange(母函数用的二维费用背包)
摘要:#include#include#include#include#includeusing namespace std;int main(){int dp[260][105];int a[5]={50,25,10,5,1};int n;memset(dp,0,sizeof(dp));for (int i = 0; i < 100; i++){dp[0][i]=1;}for (int i = 0; i < 5; i++){for (int j = a[i]; j <= 250; j++){for (int k = 1; k <= 100; k++){if (dp[j-a[
阅读全文
HDUOJ 1879继续畅通工程(并查集)
摘要:1 #include 2 #include 3 using namespace std; 4 struct home 5 { 6 int a; 7 int b; 8 int dis; 9 int _Construct;10 }v[5008];11 int father[200];12 int sum=0;13 int cmp(const void *a,const void *b)14 {15 struct home *c,*d;16 c=(struct home *)a;17 d=(struct home *)b;18 re...
阅读全文
qsort和sort实验程序
摘要:#define inandout#include #include #include #include #include #include #include #include #include #includeusing namespace std ;#define Max 10000000int cmp(const void*a,const void* b)//这里实现了多维数组排序,其实有结构体了无所谓{int c=*((int *)a+1);int d=*((int *)b+1);return c-d;}int node[Max+1][3]={{1,2,3},{2,3,3},{8,5,0
阅读全文
大数类
摘要:#define inandoutn#include #include #include #include #include #include #include #include #include using namespace std ;const int IntegerLen=1000;class Integer{public:Integer(int num=0)//利用整数初始化 有待改进 {if(num=10){result[i]-=10;result[i+1]++;}}result.sign=(*this).sign;}else result=(*this)-(-another);r.
阅读全文
POJ 1088 滑雪 记忆化搜索
摘要:#include using namespace std;int row ,col;int matrix[105][105]={0};// 保存原始数据int cnt[105][105]={0}; // 记录每一个点的最大滑雪长度int DP(int i, int j){int max = 0;// 如果已经处理过,直接返回(记忆化搜索效率之所以高的原因:不重复计算)if (cnt[i][j] > 0) {return cnt[i][j];}// 以下四块语句,只对合法的i和j,进行递归(递归的重点就是:剪去所有不合法的,只处理所有合法的!!!)if (j-1 >= 0){if (
阅读全文
HDUOJ 3790 最短路代码分析spfa和Dijstra
摘要:#include #include #include #define INF 10000000using namespace std;struct node{ int dis,cost;};struct path{ int value,cost;};node lowcost[1005];bool inQueue[1005];path road[1005][1005];int main(){ int N,M; while(scanf("%d%d",&N,&M),N!=0&&M!=0) { if(N==0 && M==0) bre
阅读全文