摘要:
逛ACM神犇的博客的时候看到的这个神奇的算法KMP吧,失配函数难理解,代码量长BF吧,慢,很慢,特别慢。BM吧,我不会写。。。现在看到了Sunday算法呀,眼前一亮,神清气爽啊。字符串匹配算法的效率大概是取决于在发生失配时如何进行下一步的问题。其他咱就不说了。这个Sunday算法在发生失配的时候,跳... 阅读全文
摘要:
Tarjan算法 (以发现者Robert Tarjan命名)是一个在图中寻找强连通分量的算法。算法的基本思想为:任选一结点开始进行深度优先搜索dfs(若深度优先搜索结束后仍有未访问的结点,则再从中任选一点再次进行)。搜索过程中已访问的结点不再访问。搜索树的若干子树构成了图的强连通分量。 应用到咱... 阅读全文
摘要:
一、逆序对系列问题题目:http://poj.org/problem?id=1804题意:给定一个序列a[],每次只允许交换相邻两个数,最少要交换多少次才能把它变成非递降序列.求逆序对的裸题。如果我们交换相邻两个数,我们逆序对的个数只能是+1或-1我们现在需要得到一个非递减数列,即消去所有逆序对,而... 阅读全文
摘要:
没readkey的情况type Tstring=record s:array[0..maxn] of char; n:longint; end;procedure scan(var S:Tstring);beginS.n:=0; while not seekeoln do with S... 阅读全文
摘要:
Lucas定理 A、B是非负整数,p是质数。AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。 则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0])modp同 即:Lucas(n,m,p... 阅读全文
摘要:
查错考场上又写挂的一道签到题。。。我们发现这题要求得到一个最小字典序列显然找到所有序列然后排序是不可取的,那么我们不能使用平常的拓扑排序方法,怎么搞使得在每次处理拓扑顺序的时候来维护呢?用小根堆维护入度为0的点即可,输入的时候统计入度{$inline on}const maxn=100010;typ... 阅读全文
摘要:
很有意思的一道题目 考场上想的是HASH成一个整数,把末位asicc码值*1,依次乘*10,得到一个整数,然后利用等差性、唯一性快排Nlogn乱搞的 证明如下: 对于明文abcde 密文 bcdef 有(a-b)*10000+(b-c)*1000+(c-d)*100+(d-... 阅读全文
摘要:
还是区间求和区间修改的问题,我们使用线段树解决以后发现编程复杂度比较大 在这里介绍一个简单的数据结构,树状数组。 树状数组的优势是编程复杂度小,常数小,时间复杂度也不错 树状数组的查询,修改,都是LOG(N)级别的 下面来分析一下上面那个图看能得出什么规律: 据图可知:c1=a1,... 阅读全文
摘要:
先介绍两个:大数的GcdStein+欧几里德 function stein(a,b:int64):int64;begin if a>1,b>>1)>1,b)); if (b and 1)=0 then exit(stein(a,b>>1)); exit(stein((... 阅读全文
摘要:
要求a^b^c mod p保证gcd(c,p)=1用费马小定理b:=quick_mod(b,c,p-1);c:=quick_mod(a,b,p);a^c mod p=a^(c mod phi(p)) mod p而素数的phi函数是无需计算的,即p-1推广到多个,依次降幂即可。不断应用快速幂。var ... 阅读全文