原创 vim配置文件和插件

maweiwei學長的vim配置,感覺很實用 簡易安裝方法: 打開終端,執行下面的命令就自動安裝好了: wget -qO- https://raw.github.com/ma6174/vim/master/setup.sh | sh -x

原创 POJ 3693 Maximum repetition substring(後綴數組求最長重複子串)

題目大意:和spoj687類似,就是當長度相同是需要輸出一個最小的字典序的序列。 解體思路:這次需要枚舉所有的從i到d = i-L/i (d = i-L%i)的位置,然後記錄保證最大值的同時,求出來字典序最小的。 Maximum re

原创 POJ 3580 SuperMemo(伸展樹的基本操作)

題目大意:給你六個操作,讓你實現這些功能。 解題思路:伸展樹的基本應用,用伸展數實現各種功能。 SuperMemo Time Limit: 5000MS   Memory Limit: 65536K Total Submission

原创 學習筆記----伸展樹

最近在看伸展樹,看到了一個不錯的文章,轉載一下便於以後學習 轉載地址:http://dongxicheng.org/structure/splay-tree/ 1、 概述 二叉查找樹(Binary Search Tree,也叫二

原创 POJ 3294 Life Forms(後綴數組求k個串的最長子串)

題目大意:給出n個字符串,讓你求出最長的子串,如果有多個按照字典序順序輸出。 解題思路:將n個字符串連起來,中間需要隔開,然後我們二分枚舉字符串的長度,求最長的長度,如果多個需要按照字典序保存起來,最後輸出答案就可以了。時間複雜度是:O(

原创 Codeforces Round #228 (Div. 1) C. Fox and Card Game

題目大意:給你n組數,每組有m個,有兩個人第一個人只能從開頭開始取,第二個人只能從最後一個取,第一個人先手,每個人都足夠聰明,問你他們最後的最大的得分爲多少。 解題思路:顯然如果每組都可以對稱着取數,不會影響總得分,影響的分的是個數爲奇數

原创 Codeforces Round #290 (Div. 2) A,B,C,D

這場CF終於當了一次手速狗啊,簡直了啊。 A:簽到,輸出一個蛇形,看着樣例找到規律打印路徑就可以了。 int main() { int n, m; while(cin >>n>>m) { for(i

原创 SPOJ 220. Relevant Phrases of Annihilation(後綴數組多次不重疊子串)

題目大意:給定N個串,求每個串至少出現兩次的最長子串。 解題思路:每個字符串至少出現兩次且不可重疊的最長子串:二分枚舉長度後在同一分組中對每一個字符串保留一個最小的位置和一個最大的位置,最後查看是否每個串在同一組中都有至少兩個後綴,並且後

原创 URAL 1297. Palindrome(後綴數組求最大回文串)

題目大意:給你一串字符串,讓你求出來它存在的最長連續的迴文串。 解題思路:先把字符串逆序加到數組中,然後用後綴數組求解。兩種方法:1,枚舉排名,直接比較rank相同的字符串的位置差是不是len。如果是的話,就記錄求解;2,枚舉地址,求第i

原创 Codeforces Round #287 (Div. 2)A,B,C,D,E

A簽到題排序之後貪心一下就可以了。 const int maxn = 10010; using namespace std; struct node { int pos; int num; }f[maxn]; boo

原创 SPOJ 687. Repeats(後綴數組求最長重複子串)

題目大意:給你一個串讓你求出重複次數最多的連續重複子串的重複次數。 解題思路:論文上給出的解答是: 這還沒完,因爲經過這兩個點的情況還不完備,應還可以假設起點在 [ i*j-i+1, i*j-d],其中 d = i-L/i (d = i

原创 POJ 2774 Long Long Message && URAL 1517. Freedom of Choice(求最長重複子序列)

兩個題目意思差不多,都是讓求最長公共子串,只不過poj那個讓輸出長度,而URAL那個讓輸出一個任意的最長的子串。 解體思路: Long Long Message Time Limit: 4000MS   Memory L

原创 POJ 3415 Common Substrings(後綴數組求重複字串)

題目大意:給你兩個字符串,讓你求出來兩個字符串之間的重複子串長度大於k的有多少個。 解題思路: 先說論文上給的解釋:基本思路是計算A的所有後綴和B的所有後綴之間的最長公共前綴的長度,把最長公共前綴長度不小於k的部分全部加起來。先將兩個字符

原创 Codeforces Round #288 (Div. 2) A,B,C,D,E

A:一個一個點向圖裏面加,判斷其所在的位置與其他的點是否可以構成小矩形就可以了。 B:貪心,如果前面的偶數有比他小的就找到一個最靠前的交換,如果前面的偶數都比它小,就找一個最靠後的交換。 C:貪心,把蠟燭儘可能的放在惡魔,來之前,這樣可以

原创 HDU 2438 Turn the corner(三分枚舉角度)

題目大意:給你一個拐角,兩邊的路的寬度分別爲x,y。汽車的長和寬分別爲h,w。問你這個汽車否轉彎成功。 解題思路:如圖,枚舉角度。 這是一個凸函數所以三分枚舉角度。 Turn the corner Time Limit: 3000/