上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 13 下一页
摘要: 我用的普通的宽搜去做的这道题,只不过在里面加了一个等待队列,确定一些@的点入队的时间,而且后进入队列的点一定比前面的步数要多,所以那也是一个非降序的队列View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<queue> 5 #define N 505 6 using namespace std; 7 int dir[4][2]={0,1,1,0,0,-1,-1,0}; 8 bool vis[N][N]; 9 struct node 10 { 阅读全文
posted @ 2012-05-31 22:30 zhenhai 阅读(306) 评论(0) 推荐(0)
摘要: 这个可以作为线段树的模板来使用了,很经典,以前总是搞不清楚要向下更新,这次是明白了,多次修改很多区间时没必要每次都去修改,可以最后一块修改View Code 1 #include<stdio.h> 2 #include<string.h> 3 #define N 100005 4 struct node 5 { 6 int r,l; 7 long long sum,v; 8 }; 9 node p[4*N]; 10 long long val[N]; 11 void build(int l,int r,int i) 12 { 13 p[i].r=r;... 阅读全文
posted @ 2012-05-30 23:02 zhenhai 阅读(168) 评论(0) 推荐(0)
摘要: 利用组合数学的一道题,对于一个序列先找长度比这个序列短的序列个数,再找长度相同的序列的个数View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int c[30][30]; 6 char s[15]; 7 int main() 8 { 9 int i,len,j,code;10 c[0][0]=1;11 for(i=1;i<=26;i++)12 for(j=0;j<=i;j++)13 c[i][j]=j?c[i- 阅读全文
posted @ 2012-05-29 23:53 zhenhai 阅读(171) 评论(0) 推荐(0)
摘要: 威佐夫博奕,有两堆物体,给出两堆物体的数量,每个人每次从两堆物体里任意一堆拿走任意多个物体,或者同时从两堆物体里拿走相同数量的物体,最后把所有物体拿完的人赢,即为威佐夫博奕。百度百科对威佐夫博奕的说明:http://baike.baidu.com/view/1952620.htm,感觉比较好懂。poj的1067就是威佐夫博奕,代码如下:View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 using namespace std; 5 int main() 6 { 7 dou 阅读全文
posted @ 2012-05-28 20:26 zhenhai 阅读(446) 评论(0) 推荐(0)
摘要: 这道题和poj的食物链很像,要在路径压缩的过程中进行坐标的位置处理,要保存的是当前节点相对于父节点的相对坐标位置。合并的时候要考虑清楚两个父节点之间的坐标关系是什么View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #define N 40005 5 using namespace std; 6 struct node 7 { 8 int p; 9 int x,y;10 int r;11 int xd,yd;12 };13 int n;14 node f[N];15 阅读全文
posted @ 2012-05-22 23:09 zhenhai 阅读(186) 评论(0) 推荐(0)
摘要: 刚开始一直re,高精度的时候要注意,f[n]=f[n-1]+2*f[n-2];数组要开到350才够View Code 1 #include<stdio.h> 2 #include<string.h> 3 #define max(x,y) x>y?x:y 4 char s[350][105]={"1","1"}; 5 int t1[105]; 6 void add(int n1,int n2) 7 { 8 int len1=strlen(s[n1]); 9 int len2=strlen(s[n2]);10 int lenma 阅读全文
posted @ 2012-05-21 23:49 zhenhai 阅读(169) 评论(0) 推荐(0)
摘要: 链接:http://poj.org/problem?id=1459网络流的压入重标记算法模板,完全按照算法导论的模式打出来的,没有什么优化之类的,只是为了给自己打模板,要省赛了,加油啊。View Code 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #define N 105 5 #define min(x,y) x<y?x:y 6 #define inf 0x7fffffff 7 using namespace std; 8 int f[N][N],c[N][N]; 9 阅读全文
posted @ 2012-05-21 22:11 zhenhai 阅读(210) 评论(0) 推荐(0)
摘要: 字符串最小表示是指一个给定一个字符串,从特定的为止开始比如说abc可以使bca也可以是cab在这些表示中间,abc是字典序最小的,则abc就是这个字符串的最小表示。字符串最小表示的暴力方法很容易想,就是枚举每一个位置的字符为起始字符,分别比较字典序大小。而我们今天要讨论的是一个O(n)的算法,在线性时间内找到一个字符串的最小表示比如说一个字符串bacad我们一样去找字符串的初始位置,只是不再去全部枚举完所有的字符,比如说,我们知道b>a那么第一个位置肯定不是字符串最小表示的位置,而在两个a的地方,我们需要往下比较,因为c<d所以,第二个a也不是最小表示的位置,以此类推,最后可以确定 阅读全文
posted @ 2012-05-20 23:01 zhenhai 阅读(437) 评论(0) 推荐(0)
摘要: 应用karp算法找最大流的模板题,对最大流一直都是不很懂,看着别人的代码打完这个感觉像是懂了点,就是一直找增广路径,直到找不到为止,求出来的就是整个的最大流View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<queue> 5 #define min(x,y) x<y?x:y 6 #define N 20 7 #define inf 0x7fffffff 8 using namespace std; 9 int tcase,n,m;1 阅读全文
posted @ 2012-05-20 22:52 zhenhai 阅读(185) 评论(0) 推荐(0)
摘要: 旋转卡壳或者直接求出来凸包之后直接枚举凸包上的点都可以,而且时间上其实差不多,理论上确实旋转卡壳比凸包要快,但是这个题看来是数据的问题,谁也不会去打个几万条边的多边形,那太费劲了View Code 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #define N 30005 5 #define max(a,b) a>b?a:b 6 struct point 7 { 8 long long x,y; 9 }; 10 point p[N]; 11 point sta[N]; 阅读全文
posted @ 2012-05-20 20:57 zhenhai 阅读(173) 评论(0) 推荐(0)
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 13 下一页