08 2008 档案
摘要:整整写了四天 如果有什么错误 请指出 本人毕竟水平有限 http://files.cnblogs.com/zhuangli/暑期集训阶段总结.ppt
阅读全文
摘要:凡是留上星不会做的 我都要做。。。这是俺单纯的人生目标~~~ 先分析这道题目 求含有n个不同字母的最大串长度~~ 实现就只好用hash了 哈哈 以下是代码 附加注释 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include u...
阅读全文
摘要:请教了月光大牛和DK大牛 具体思路是首先提取强连通分量 然后将分量缩点重新构图 记录各点入度 将入度为0的点所代表的分量中的费用最小值记录下来 相加得到最小费用 其入度为0点的个数就是要求的通知的人数 具体代码如下 使用Tarjan寻找强连通 顺便ORZ两位大牛 Code highlighting produced by Actipro CodeHighlighter (freewar...
阅读全文
摘要:二叉树是我们都非常熟悉的一种数据结构。它支持包括查找、插入、删除等一系列的操作。但它有一个致命的弱点,就是当数据的随机性不够时,会导致其树型结构的不平衡,从而直接影响到算法的效率。 跳跃表(Skip List)是1987年才诞生的一种崭新的数据结构,它在进行查找、插入、删除等操作时的期望时间复杂度均为O(logn),有着近乎替代平衡树的本领。而且最重要的一点,就是它的编程复杂度较同类的AVL树,...
阅读全文
摘要:锻炼对于未给予集合类型的数据的技巧,使用并查,按rank归并。 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include using namespace std; typedef struct { lon...
阅读全文
摘要:以下是某牛blog上关于算法描述的转载,本人编写代码仅有的算法资料也就是这些. 收缩有向图中的强连通分量大约是图论的线性算法中最具技巧性一种了。我们的首要目的是对于每个顶点设定一个Belong值,也就是它从属于哪个顶点所代表的强连通分量,至于重新建立图的边,不过是将所有边扫描一遍看是否在新图中出现而已,比较容易。 下面是利用一遍DFS求强连通分量的方法:对于每个顶点,设立Num...
阅读全文
摘要:数据弱,代码有问题,等待修正 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include using namespace std; __int64 lmax=0x7FFFFFFF; const long MAXN=1200; __...
阅读全文
摘要:2.1.2 可并堆的定义 可并堆(Mergeable Heap)也是一种抽象数据类型,它除了支持优先队列的三个基本操作(Insert, Minimum, Delete-Min),还支持一个额外的操作——合并操作: H ← Merge(H1,H2) Merge( ) 构造并返回一个包含H1和H2所有元素的新堆H。 O(n),用它来实现可并堆,则合并操作必然成为算法的瓶颈。左偏树(Leftis...
阅读全文
摘要:该解法求出的所有ans均为各解等价类中的代表,可通过加减任意n来得到该等价类的所有解 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include using namespace std; long ans[1000]; long x,y...
阅读全文
摘要:问题简单来说就是 a = ai (mod ni) 求未知数a, 以下小结略去证明, 只是对定理作了必要的解释, 要了解相关定理,可查阅数论资料. 中国余数定理: 设 n=n1*n2...nk, 其中因子两两互质.有: a-----(a1,a2,...,ak), 其中ai = a mod ni, 则 a和(a1,a2,...,ak)关系是一一对应的.就是说可以由 a求出(a...
阅读全文
摘要:所谓扩展欧几里德,就是在欧几里德算法的基础上加入变量X,Y,使得aX-bY=GCD(a,b)。 此时X,Y是该不定方程式的一组解。 求a * x + b * y = n的整数解的过程: 1、先计算Gcd(a,b),若c不能被Gcd(a,b)整除,则方程无整数;否则,在方程两边同时除以Gcd(a,b),得到新的不定方程a' * x + b' * y = n',此时Gcd(a',b...
阅读全文
摘要:在数学中,连分数或繁分数即如下表达式: 这里的 a0 是某个整数而所有其他的数 an 都是正整数。可依样定义出更长的表达式。如果部分分子(partial numerator)和部分分母(partial denominator)允许假定任意的值,在某些上下文中可以包含函数,则最终的表达式是广义连分数。在需要把上述标准形式与广义连分数相区别的时候,可称它为简单或正规连分数,或称为是规范形式的。 ...
阅读全文
摘要:比起WC关于后缀数组的倍增法,要更有效率,由于模版使用的是指针,所以在new和delete处效率会有所消耗 来自NIT的后缀数组模版 注意在字符串间加入特殊符号进行区分 避免LCP越界 SAMLPE测试为HDU 1403~~ Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.Code...
阅读全文
摘要:适合于快速的区间求和查询 较高的编程效率 优秀的算法....神一样的算法 以下是sample Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include using namespace std; long c[2000]; l...
阅读全文
摘要:以下为转载资料 Note:阅读本文需要有KMP算法基础,如果你不知道什么是KMP,请看这里: http://www.matrix67.com/blog/article.asp?id=146 (Matrix67大牛写的) AC自动机是用来处理多串匹配问题的,即给你很多串,再给你一篇文章,让你在文章中找这些串是否出现过,在哪出现。也许你考虑过AC自动机名...
阅读全文
摘要:题目描述不清 字典序排列并非是字符串比较 而是点序列号的比较 终点与起点相同 路径只为顶点 50次WA后AC 够变态 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include #include using namespace std; ...
阅读全文
摘要:在DK同学的强烈要求下狂A此题,枚举第一行的所有状态,由于下一行必受上一行约束,则只要判断最后行是否达到要求即可. 总结该题技巧如下: 1、化行为数,将一行数据以二进制形式保存。 2、使用位运算加快速度,^为翻转,&为取值。 3、行列剪枝,若行数小于列数,则使矩阵转置。 代码如下(600多ms ,不知道100MS以内的代码是怎么做到的): Code highlighting pro...
阅读全文
摘要:....由于某些人认为双向过这道比较爽,于是草草coding一番,用了G++才勉强过掉. DK大牛说了,双向不能求出最优解,因为它不能保证起点出发10步终点出发1步的最优,和起点出发6步和终点出发6步的次优中,前者首先被发现.... 正规解法是枚举第一格翻和不翻的状态,然后后面的跟着要求翻........ 但双向广搜的方法值得借鉴 因此保存下我的代码思路. 要点是: 1.二进制位状态...
阅读全文
摘要:这是比较经典的DP 有一点很明显 却很难肯定的 那就是在最好的分组方案中,每组中两根较短的筷子在有序筷子数列中一定是相邻的 dp[j][i]表示从前i根筷子中挑出j组(不考虑第三根) dp[j][i]=min{ dp[j][i-1];(i>j*2) dp[j-1][i-2]+(hash[i]-hash[i-1])^2;(n-i>...
阅读全文
摘要:十分无耻的题目 开了300W的内存才过,这个测试数据也太变态了吧~~~ 把原先用以比较结束的布尔值进行了替换,加入num值表示是进行了多少次前缀匹配,只要通过查找,返回匹配数就行了~~~上次的模版的某些部分有问题,重新进行了修正... Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.C...
阅读全文
摘要:DK大牛最近分遗产,又偷了一个过来,真是好东西!! 算法流程 必须步骤:preprocess 插入:读字符串入a后insert 查找:读字符串入a后find Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include using names...
阅读全文
摘要:呵呵,又从DK那偷代码了,好兴奋哈,以下是这个算法的简单介绍,不过我用它去解决HDU的1532 竟然TLE,郁闷.到时候再继续问问DK吧...so 烦躁. 哈哈 终于经过大牛的指点 原来本算法是从0开始标号的...... Dinic是个很神奇的网络流算法。它是一个基于“层次图”的时间效率优先的最大流算法。 层次图是什么东西呢?层次,其实就是从源点走到那个点的最短路径长度。于是乎,我们得...
阅读全文
摘要:KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[i],顶点Yi的顶标为B [i],顶点Xi与Yj之间的边权为w[i,j]。在算法执行过程中的任一时刻,对于任一条边(i,j),A[i]+B[j]>=w[i,j]始终 成立。KM算法的正确性基于以下定理: 若由二分图中所有满足A[i]+B[j]=w[i,j]的边(i,j...
阅读全文
摘要:这是来自zjut-vegetable的好东西~~收藏下,邻接表是个好东西! Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include using namespace std; const int maxn=205; const int in...
阅读全文
摘要:每次在s-t之间找出费用最小的一条路径即单源最短路,如果t点不再被访问到,则算法终止。否则,按着最短路径找出最小剩余容量c,最大流量加上c,再更新最短路径上的边,前向弧减去c,反向弧加上c,并且造一条逆向的费用边,最小费用加上每条边的花销,每条边的花销=单位费用*c。 最小费用最大流既能求最小费用,又能得出最大流,是更为一般的模型。 牛人哈~~~自己也懒得看原理了,代码中...
阅读全文
摘要:1. 最大流最小割定理介绍: 把一个流网络的顶点集划分成两个集合S和T,使得源点s ∈S且汇点t ∈T,割(S,T)的容量C(S,T) =∑Cuv, 其中u∈S且v∈T。 从直观上看,截集(S,T)是从源点s到汇点t的必经之路,如果该路堵塞则流从s无法到达t。于是我们可以得到下面的定理: 最大流最小割定理: 任意一个流网络的最大流量等于该网络的最小的割的容量。 这个定理的证明这里就不...
阅读全文

浙公网安备 33010602011771号