OI
ZJsheep
这个作者很懒,什么都没留下…
展开
-
SPOJ263 POJ1961 Period - KMP
一道KMP模板应用题。PS:这个算法的名字比较诡异是因为它由三位伟大的科学家共同设计:D.E.Knuth,J.H.Morris和V.R.Pratt。KMP模板长这样(详见《算法竞赛进阶指南》p.66 或 洛谷题解):void KMP() { Next[1] = 0; for (int i = 2, j = 0; i <= lb; i++) { while...原创 2019-03-15 12:36:47 · 136 阅读 · 0 评论 -
POJ3764 The xor-longest Path - Trie
首先应该想到用Trie解决两个数xor最大值的模板(可见CH1602)。具体来说,建一棵字典树,这棵字典树每个节点仅有两个分支0和1,然后把每一个数字的二进制形式从高位到低位插入Trie。若要查询最大值,就在Trie上沿尽量当前位的反方向行走。若能够这样走,则ans该位为1,否则为0。在这道题中,我们先用一遍dfs处理出每个节点到根节点路径上所有边权的xor和(设为sum[])。每两个节点(假设...原创 2019-03-22 23:29:16 · 123 阅读 · 0 评论 -
POJ2442 Sequence - Heap
Explanation首先考虑m=2的情况。此时该问题就相当于用两个指针分别指向两个从小到大排好序的数组,然后每生成一个数,就将所用指针向后移一个位置这一经典问题。假设数组为A[]和B[],我们建立一个小根堆,堆中存A的指针p1,B的指针p2这样一个二元组,比较大小依据A[p1]+B[p2]进行。每取出一次堆顶,就把{p1+1,p2}和{p1,p2+1}插入堆内,用如上方法生成一个长为n的tmp...原创 2019-04-04 23:46:21 · 244 阅读 · 0 评论