摘要:
次小生成树讲的比较详细的:http://www.cppblog.com/MatoNo1/archive/2011/05/29/147627.aspx对于prim算法的三种特殊另外注意三种特殊情况:【1】图G不连通,此时最小生成树和次小生成树均不存在。判定方法:在扩展T的过程中找不到新的可以加入的边;【2】图G本身就是一棵树,此时最小生成树存在(就是G本身)但次小生成树不存在。判定方法:在成功求出T后,发现邻接矩阵中的值全部是无穷大;【3】图G存在平行边。这种情况最麻烦,因为这时代价最小的可行变换(-E1, +E2)中,E1和E2可能是平行边!因此,只有建立两个邻接矩阵,分别存储每两点间权值最小 阅读全文
摘要:
hello world:1 print 'Hello World'就一行。。。python的第一个优点:简单。······················从第四章开始做些笔记,方便以后复习·············· 阅读全文
摘要:
约束条件 :f[i]表示前i块石头的能量总和。f[R]-f[L-1]>=Af[R]-f[L-1]<=Bf[i]-f[i-1]<=10000f[i]-f[i-1]>=-10000关于为什么是字典序。。。在网上看到如下:总结了一下,差分约束系统有两个解决方案:1,最短路模型。所有的约束条件都是形如f(X)<=f(Y)+B,B正负不分。这样在有向图中addEdge(Y,X,B)这条边,这样根据最短路求解的性质我们可以得到X的最短路值满足了所有的f(X)<=f(Yi)+Bi,并且使得某个(某些)f(X)=f(Yk)+Bk。本来是f(X)<=f(Yk)+Bk的, 阅读全文
摘要:
设a[i] 为第i个营的人数,s[i] = a[1] + a[2] + … + a[i], s[0] = 0 则对于题目 Ci 有: 0 <= s[i] – s[i-1] <= a[i] -----(1) i, j, k有:a[i]+a[i+1]+...a[j]>= s[j] – s[i-1] >= k -----(2) 化为以下四个式子:s[i]-s[i-1]<=a[i] ------>addedge(i-1,i,a[i])s[i-1]-s[i]<=0 --------->addedge(i,i-1,0)s[j]-s[i-1]<=sum[ 阅读全文
摘要:
以前用线段树做过这题。dis[i]表示从0->i-1这i个数存在多少个数。则有dis[b+1]-dis[a]>=c;dis[i+1]-dis[i]>=0 && dis[i+1]-dis[i]<=1转换成为:dis[a]-dis[b+1]<=-c;dis[i]-dis[i+1]<=0dis[i+1]-dis[i]<=1建图。dis[en]-dis[st]<=w.View Code 1 // File Name: 1508.cpp 2 // Author: Missa 3 // Created Time: 2013/2/20 星期三 阅读全文
摘要:
开始的时候想的是bfs。对于每个砖头step+2,然后wa了。看了discuss明白了。这样的话就相当于别的方向只走了一步,而砖头的这个方向是两步,不符合搜索的公平性。然后把queue换成priority_queue就ac了。数据:8 10YEEEEEBBBBBBBEEEEEEEBBBBBBEEEEBBBBREEEEEEEEEEEBBBBBBBBBBBEEEEEEEEEEEEEBBBBBEEEET1710 10YEEEEEBBBBBBBEEEEEEEBBBBBBEEEERRRRBBBBBEBBEERSSSEEBBBBREEEEEEEEEEEBBBBBBBBBBBEEEEEEEEEEEEEBBB 阅读全文
摘要:
约瑟夫环问题http://www.cnblogs.com/alex4814/archive/2011/09/11/2173739.html约瑟夫问题:用数学方法解的时候需要注意应当从0开始编号,因为取余会等到0解。实质是一个递推,n个人中最终存活下来的序号与n-1个人中存活的人的序号有一个递推关系式。分析:假设除去第k个人。0, 1, 2, 3, ..., k-2, k-1, k, ..., n-1 //original sequence (1)0, 1, 2, 3, ..., k-2, , k, ..., n-1 //get rid of kth person (2)k, k+1, ... 阅读全文
摘要:
墙上有一面黑板,现划分为多个矩形,每个矩形都要涂上一种预设颜色C。由于涂色时,颜料会向下流,为了避免处于下方的矩形的颜色与上方流下来的颜料发生混合,要求在对矩形i着色时,处于矩形i上方直接相邻位置的全部矩形都必须已填涂颜色。在填涂颜色a时,若预设颜色为a的矩形均已着色,或暂时不符合着色要求,则更换新刷子,填涂颜色b。问最少需要的刷子次数(相同的颜色在不同的时间需要算多次。。自己应该想的清楚怎么回事吧。。。)。利用dfs来枚举吧。。。情况不多。View Code 1 // File Name: 1691.cpp 2 // Author: Missa 3 // Created Time: ... 阅读全文
摘要:
证明:最大独立数=未匹配的节点+匹配数/2 (1)(设n=匹配数/2,可以理解为去掉二分图某侧匹配好的n个节点,在另一侧对应的n个节点就没有相匹配的了)而 未匹配的节点=顶点数-匹配数 (2)由(1)(2)得: 最大独立数=顶点数-匹配数的一半 1 // File Name: 1466.cpp 2 // Author: Missa 3 // Created Time: 2013/2/11 星期一 20:24:26 4 5 #include<iostream> 6 #include<cstdio> 7 #include<cstring> 8 #include& 阅读全文
摘要:
1 // File Name: 2060.cpp 2 // Author: Missa 3 // Created Time: 2013/2/11 星期一 17:11:30 4 5 //最小路径覆盖数=顶点数-二分图最大匹配数 6 #include<iostream> 7 #include<cstdio> 8 #include<cstring> 9 #include<algorithm>10 #include<cmath>11 #include<queue>12 #include<stack>13 #includ 阅读全文
摘要:
构图有点意思。。没想到。。下面是构图:把行里面连在一起的坑连起来视为一个点,即一块横木板,编上序号,Sample则转化为:1 0 2 00 3 3 34 4 4 00 0 5 0把这些序号加入X集合,再按列做一次则为:1 0 4 00 3 4 52 3 4 00 0 4 0将 每一个 湿地的点 按其分配的行列 号 连边 ,如(i,j)为湿地 ,则用 其分配的 行 ——》 列,这样,我们求的就是 ,最小点覆盖。View Code 1 // File Name: 2226.cpp 2 // Author: Missa 3 // Created Time: 2013/2/10 星期日 23:... 阅读全文
摘要:
题意:两台机器 A, B。初始状态为0 工作模式。k项任务,其中第 i 项工作可由 A 机器的 mode_x 或者 B 机器的 mode_y 来完成。不过机器转换模式需要手动操作。给出 k 项工作的要求,请求出完成 k 项工作最小需要的操作时。思路:第 i 项工作可由 A 机器的 mode_x 或者 B 机器的 mode_y 来完成,最小的操作数,一定是使用最少数量的机器模式,这些模式能完成所有的工作。以此为构图思路,将工作做边,模式做点,将问题转化为最小点覆盖集问题,而最小点覆盖集 = 最大匹配数。黑书上的例题,证明如下:(1) M个是足够的。只需要让它们覆盖最大匹配的这M条边,则其他边一定 阅读全文
摘要:
参见:http://www.cnblogs.com/acSzz/archive/2012/10/17/2728461.htmlView Code 1 // File Name: 3487.cpp 2 // Author: Missa 3 // Created Time: 2013/2/8 星期五 10:43:21 4 5 #include<iostream> 6 #include<cstdio> 7 #include<cstring> 8 #include<algorithm> 9 #include<cmath> 10 #includ 阅读全文
摘要:
将所有的点按所属的party分为1 2.然后分别求出源点 跟终点到各自的图中的最短路。枚举得出答案。View Code 1 // File Name: 3767.cpp 2 // Author: Missa 3 // Created Time: 2013/2/7 星期四 20:40:32 4 5 #include<iostream> 6 #include<cstdio> 7 #include<cstring> 8 #include<algorithm> 9 #include<cmath> 10 #include<queue> 阅读全文
摘要:
floyd的核心思想就是动态规划从k=0->n来松弛i->j的路径,因为floyd的外层到k时,i->j的最短路上肯定没有k。所以我们可以先找环,再更新。如果存在的话,那么肯定是i->j 然后j->k->i。这样保证了i->j这条路不经过k。View Code 1 // File Name: 1734.cpp 2 // Author: Missa 3 // Created Time: 2013/2/7 星期四 16:39:58 4 5 #include<cstdio> 6 #include<cstring> 7 using na 阅读全文