原创 manacher算法 解決迴文

manacher算法   manacher算法,主要是用來求某個字符串的最長迴文子串.時間複雜度爲O(n). 首先,在字符串s中,用rad[i]表示第i個字符的迴文半徑,即rad[i]儘可能大,且滿足: s[i-rad[i],i-1]

原创 有關字符竄的一些處理

1.要把一些數字讀入到字符竄中: 此時非常便捷的寫法是用      sprintf(temp, "%d", a[i])   //temp是目標字符串, a[i]是數; 2.從一些有分隔符的字符竄中取出所有的數: 比如:10,23,22,

原创 SRM 521

賽後做的這些題,值得一提的事div2的1000和div1的500 題意差不多,在平面上給你一些點,用正方形去圈這些點,在保證所圈的點集不同的情況下有多少個這樣的正方形。 div2 1000給你的正方形邊長是固定的,而div1 500邊長有

原创 一位ACMer過來人的心得

【轉】一位ACMer過來人的心得(轉載)  刻苦的訓練我打算最後稍微提一下。主要說後者:什麼是有效地訓練?        我想說下我的理解。        很多ACMer入門的時候,都被告知:要多做題,做個500多道就變牛了。其實,這既

原创

給你一個數組,叫你把這個數組整理成有序且不重複的數組 最好的方法是:給你x[]數組     set<int>sx;                  //聲明一個sx的集合     sx=set<int>(x.begin(),x.end(

原创 H. Queries for Number of Palindromes

這個題老實說算做了一天,,一方面是dp沒怎麼做,,另一方面還是自己粗心dp有個原則一定是 已知推未知! 題意是 給你一個主串,詢問你一個範圍的所有迴

原创 uva 297 Quadtrees

這題先分別建樹,再先序遍歷。 值得注意的是,可能會有這樣的數據: e f 或者 f pffee 之類的。 我是用的指針: #include <cstdio> #include <cstdlib> #include <cstring>

原创 矩陣快速冪好題PvZ once again

題意: 植物大戰殭屍算個out的遊戲了,原諒被出題逼瘋了的跑來挖墳了。 會玩的請無視這一段直接看題目{ 遊戲中殭屍向你的房子進發,吃掉沿途遇到的植物

原创 SRM 543

div1 250 令f[X] = 1^2^3^......^X; 找規律發現X= 1, 2, ... 20. The sequence is {1, 3, 0, 4, 1, 7, 0, 8, 1, 11, 0, 12, 1, 15, 0,

原创 uva 11205 - The broken pedometer

題意是用最少的二進制位數表示一些不同,這個題關鍵是要將給你的二進制數轉化爲在枚舉要用到某些二進制位情況下對應的十進制數,,並以此來判斷是否相同。 #include <cstdio> #include <cstdlib> #include

原创 多重揹包問題的二進制分解思想

在這之前,我空間好像轉過一個揹包九講,現在我就只對     01揹包和多重揹包有點印象了     先說下 01 揹包,有n 種不同的物品,每個物品有

原创 求樹的子樹數目

題目是srm 570 div2的1000 題意轉化一下就是 給你一棵樹,叫你求這顆樹的子樹有多少個,包括空樹。 我們用f[i]來表示以節點i爲根的樹的數目。 首先如果只是一個節點,那麼以它爲根的樹的數目爲1. 如果以a爲根的一棵樹有k個兒

原创 01揹包好題 ZOJ3703 Happy Programming Contest

是浙大校賽上的一道題。 題意:給你總時間,一些題,每個題給你所花時間,吸引力值。然後問你在總時間內,選取一種A題方案,使獲得的吸引力值最大,如果有多種,則選擇題數較多的,如果有多種,選擇罰時較少的。 本題重點就是後面的幾種比較關係;如果單

原创 博弈進行時~

博弈,搞起! 小知識點 HDOJ2176 取(m堆)石子游戲 [輸出第一步走法] 若給出的是必勝狀態:a1^a2^.......^an=k,(其中k不爲零),那麼我們的目的是要把必勝狀態 轉化爲必敗狀態從 而使得先手勝利。若a1^a2^

原创 後綴數組模板

我的模板是根據 羅穗騫 和 網上一模板 相結合改編而來,層次更加分明,數組名稱的選擇是根據用途來定義的, 總的來說應該更好理解一些: 先聲明一些概念: k-後綴數組:我這裏用的是 sa[ ] ( k ) k-名次數組:我這裏用的是 ra