自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (3)
  • 收藏
  • 关注

原创 foj 1844 题解题报告 + 源代码

题意:        题目是说, 2008年汶川大地震中,可能大约有N(N 解题方法:       这题的思路还是很容易的,就是把每个点拆成2各点a, a, 如果是原图中的边,那么,就建这样的边,, , ,其中 和的容量是inf,再在原图中添加一个汇点t,把 m个没有的被摧毁的点(不包括1)的i,与t建一条边,容量是inf,然后对于原图中的每个点建一条边,如果a是这m个点的

2010-03-25 10:32:00 364

原创 排序算法 kmp算法 双向链表的插入与删除

题意:       给你n个数,现在要你调整k个数的位置, 使得具有最少的连续段数;   比如  n = 5 , k = 1,    27 28 29 27 30   没调整前 连续段数是5 ,调整为 27 27 28 29 30 后连续段数是4 一开始看了一个错误的标程,害我挂了好久!source code:#include /!这个题目的dp好难想到啊, 终于看懂了

2010-01-19 10:48:00 759

原创 2009 ACM/ICPC 武汉赛区G题解题报告(状态压缩 dp )

题意:       给你n个数,现在要你调整k个数的位置, 使得具有最少的连续段数;   比如  n = 5 , k = 1,    27 28 29 27 30   没调整前 连续段数是5 ,调整为 27 27 28 29 30 后连续段数是4 一开始看了一个错误的标程,害我挂了好久!source code:#include /!这个题目的dp好难想到啊, 终于看懂了

2009-12-29 17:25:00 3029

原创 博弈题 poj 1143

#include #include #include using namespace std;int const max_state = 1int const maxn = 20;int maxD, record[max_state], exp[maxn+1];bool res[maxn+1];int num, state;int dfs(int curstate, int level){   

2009-12-26 20:26:00 559

原创 求矩形并的周长 poj 1177 picture

#include #include #include using namespace std;struct node{    int st, ed, m, lbd, rbd;    int sequence_line, count;} ST[40005];void build(int st, int ed, int v){    ST[v].st =

2009-12-14 14:17:00 578

原创 优美的爱情

Fleeting time does not blur my memory of you. Can it really be 4 yearssince I first saw you? I still remember, vividly, on the beautifulZhuhai Campus, 4 years ago, from the moment I saw you smile,

2009-12-13 10:47:00 468

原创 无向图的最小割算法

                       求无向图的最小割 最小割集◎Stoer-Wagner算法一个无向连通网络,去掉一个边集可以使其变成两个连通分量则这个边集就是割集;最小割集当然就权和最小的割集。可以用最小切割最大流定理:1.min=MAXINT,确定一个源点2.枚举汇点3.计算最大流,并确定当前源汇的最小割集,若比min小更新min4.转到2直到枚举完毕5.min即为所求输出min

2009-11-22 11:37:00 7718 3

原创 线段树

                            线段树  从简单说起,线段树其实可以理解成一种特殊的二叉树。但是这种二叉树较为平衡,和静态二叉树一样,都是提前已经建立好的树形结构。针对性强,所以效率要高。这里又想到了一句题外话:动态和静态的差别。动态结构较为灵活,但是速度较慢;静态结构节省内存,速度较快。接着回到线段树上来,线段树是建立在线段的基础上,每个结点都代表了一条线段[

2009-11-21 10:26:00 526

原创 树状数组

  树状数组是一个查询和修改复杂度都为log(n)的数据结构,假设数组a[1..n],  那么查询a[1]+...+a[n]的时间是log级别的,而且是一个在线的数据结构,  支持随时修改某个元素的值,复杂度也为log级别。  来观察这个图:  令这棵树的结点编号为C1,C2...Cn。令每个结点的值为这棵树的值的总和,那么容易发现:  C1 = A1  C2 =

2009-11-21 10:19:00 435

原创 差分约束系统

    差分约束若s[a]-s[b]>=k 建一条b到a的长度为k的边若 s[a]-s[b]建一条b到a的长度为-k的边>= 是求最小值的最长路;是求最大值的最短路;注意到最短路算法的松弛操作:if (d[j] > d[i] + w[i][j]) d[j] = d[i] + w[i][j]。这其中的三角形不等式:d[j] ≤ d[i] + w[i][j]简单变形就成了d[i

2009-11-21 10:18:00 276

原创 容量有上下界的最大流 poj 2396 pku

 #include #include#includeusing namespace std;int ulim[250][250],dlim[250][250],f[250][250],h[250],vh[250],din[250],dout[250];int sour,sink,tsour,tsink,m,n,testcase,tot,flow,augc;bool flag;int min(int

2009-11-14 16:47:00 1519

原创 SAP 算法 求最大流 poj 3189 pku

 #includeusing namespace std;int const MAXN=1100;int const MAXM=50010;int const oo=1234567890;typedef struct {     int u; int v; int cap; int next; }edge_t;edge_t e[MAXM];int first[MAXN];int dist[MAXN

2009-11-14 16:44:00 663

原创 中国剩余定理

 问题简单来说就是 a = ai (mod ni)   求未知数a, 以下小结略去证明, 只是对定理作了必要的解释, 要了解相关定理,可查阅数论资料.中国余数定理:      设 n=n1*n2...nk, 其中因子两两互质.有:  a-----(a1,a2,...,ak), 其中ai = a mod ni, 则 a和(a1,a2,...,ak)关系是一一对应的.就是说可以由 a求出(a1,a

2009-11-14 16:41:00 310

原创 差分约束系统

  差分约束若s[a]-s[b]>=k 建一条b到a的长度为k的边若 s[a]-s[b]建一条b到a的长度为-k的边>= 是求最小值的最长路;是求最大值的最短路;注意到最短路算法的松弛操作:if (d[j] > d[i] + w[i][j]) d[j] = d[i] + w[i][j]。这其中的三角形不等式:d[j] ≤ d[i] + w[i][j]简单变形就成了d[i]

2009-11-14 16:39:00 262

原创 poj 2100

 #include #include #include #include using namespace std;#define MAX_SQAURE_COUNT 66943struct Result { Result (int b, int l) : begin(b), length(l){} int begin; int length;};class ResultCmper {public:

2009-11-14 16:38:00 534

原创 poj 3163 Cow Relays源代码

 #include using namespace std;int const INF=1000000001;int const MAXN=310;int N,S,T,E,tot;int map[MAXN][MAXN],ans[MAXN][MAXN],dis[MAXN][MAXN],tmp[MAXN][MAXN];int test[1010],flag[1010];

2009-10-31 09:54:00 499

原创 poj 1103 maze源代码

#include using namespace std;int const MAXN=76;struct node{    int prex,prey,preid;};node pre[MAXN][MAXN][2];char map[MAXN][MAXN];int visited[MAXN][MAXN][2];int w,h;int length;int path[MAXN][MAXN]

2009-10-19 21:26:00 964

原创 poj 2100 gravedyard design 还是wa了,那位大牛看了,帮我改一下我的邮箱是972997012@qq.com

#include #includeusing namespace std;long long n;struct pale{    long long x,k;};pale res[100000];long long sum(long long x,long long k){    return (k+1)*x*x+k*(k+1)*x+k*(k+1)*(2*k+1)/6;}long long gcd

2009-10-12 20:51:00 828

转载 poj 3133 Manhattan Wiring

#include using namespace std;#define out(x) (cout typedef long long int64;const int maxint = 0x7FFFFFFF;const int64 maxint64 = 0x7FFFFFFFFFFFFFFFLL;template void show(T a, int n) { for (int i = 0;

2009-10-07 15:04:00 805

原创 poj How I Mathematician Wonder What You Are! 求多边形的核

#include #includeusing namespace std;const double EPS=1e-8;const int MAXN=100;struct point{    double x,y;};struct cp{    int n;    point p[MAXN];};//求直线a1*x+b1*y+c1=0与a2*x+b2*y+c2=0的交点point intersect

2009-10-07 15:01:00 432

原创 图的广度优先搜索算法实现

#include using namespace std;const int N=11;struct node{  int front;  int dis;}front_point[N];//记录每个点到起点的距离和每个点的前驱int graph[N][N];//用邻接矩阵来表示图bool visited[N];//记录点是否被标记void BFS(int x,int k)//广搜{  int

2009-09-17 21:50:00 538

原创 最小生成树的prim算法实现

#include using namespace std;const int N=6;const int data_max=10000000;struct edge{   int point1;   int point2;   bool vis;   int length;//边的长度}graph_edge[N*(N-1)/2];//用来存放图的边int edge_num;//边的总数bool

2009-09-17 16:56:00 294

原创 dijkstra算法实现

#include using namespace std;const int N=10;const int data_max=100000000;int graph[N][N];int distances[N];int front[N];void dijkstra(int graph[N][N],int k){   bool visited[N];   int i;   for(i=0;i  

2009-09-17 11:13:00 226

原创 欧拉回路算法实现

#include using namespace std;const int N=9;int graph[N][N];//图的邻接矩阵struct stack{  int top;  int node[N*N];}path;//Euler 回路的路径void DFS(int x)//深搜{   path.top++;   path.node[path.top]=x;   int i;   fo

2009-09-17 11:00:00 1440

原创 64位以内Rabin-Miller强伪素数测试

/*Rabin-Miller 这是个很容易且广泛使用的简单算法,它基于Gary Miller的部分象法,有Michael Rabin发展。事实上,这是在NIST的DSS建议中推荐的算法的一个简化版。 首先选择一个代测的随机数p,计算b,b是2整除p-1的次数。然后计算m,使得n=1+(2^b)m。 (1) 选择一个小于p的随机数a。 (2) 设j=0且z=a^m mod p (3) 如果z=1或z

2009-09-10 18:42:00 1664

原创 Pollard "p-1"方法 分解合数的因素;

/* Pollard "p-1"方法 (1).选取一个可被许多素数的幂次整除的正整数k;例如k=LCM(1,2,……B) (2)指数。计算ak=a^k mod n; (3)计算最大公因子,计算d=gcd(ak-1,n) (4)找到因子?若1 (5)重新开始?若d不是n 的平凡因子,且还想再进行一次实验的话则返回(2)        重新选择a和k,再进行上述步骤,否则执行步骤(6)(6)退出。 *

2009-09-10 18:33:00 2314

原创 pku acm 2021题解题报告

 该题是的题意:输入一组数据,包括某个人的人名和他父亲的名字,以及他出生时他父亲的年龄,这些人都是Ted的后代,现在要你整理这些数据,按年龄大小输出这个家族的成员,如果某些成员年龄相同,按照字母的顺序输出;解题思路:1.首先构造两个结构体,一个是people{ int bornage;char father[100];char child[100]; }其中father用来存放他父

2009-05-01 19:20:00 390

hdu 3333 turing tree 解题报告

Hdu 3333解题报告 题意描述: 给你n个数现在要你求在k个区间上[ai, bi]的不相同的数之和各是多少. N<=30,000; k<=100,000; 显然,这题不能用暴力来做。 这题我们选择用线段数来做。

2010-03-10

ACM 模板库 各种算法的实现

包括了ACM各种算法与算法实现,相当的牛鼻哦!

2009-12-11

pku acm 1050

这是我写的1050题的代码,供读者参考,如果有什么问题,请把建议发到liubinneversaydie@163.com

2009-05-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除