原创 POJ1840 解方程(數的哈希)

給定a1, a2, a3, a4, a5,求符合條件的解(x1, x2, x3, x4, x5)的個數,使得a1*x1^3 + a2*x2^3 + a3*x3^3 + a4*x4^3 + a5*x5^3 = 0。其中-50 <= x1,

原创 POJ2002 正方形的個數(二維點的哈希)

給定N個點,求出這些點一共可以構成多少個正方形。 若正方形爲ABCD,A座標爲(x1, y1),B座標爲(x2, y2),則很容易可以推出C和D的座標。對於特定的A和B座標,C和D可以在線段AB的左邊或者右邊,即有兩種情況。 因此只需要枚

原创 POJ2796 區間最大參考值

給定一個數組,定義某個區間的參考值爲:區間所有元素的和*區間最小元素。求該數組中的最大參考值以及對應的區間。 設某個區間所有元素的和爲height,區間最小元素爲width, 則對於單個元素的區間,height = width = 元素的

原创 USACO歷年比賽的數據和解題報告

http://ace.delos.com/MAR07 表示07年三月的比賽,把最後的部分改成”月份+年份“就可以了

原创 POJ3974 求字符串的最長迴文子串的長度

迴文串:如果某個字符串從左往右看與從右往左看是一樣的,則稱該字符串爲迴文串。 最長迴文子串:求解一個字符串,它是某個給定字符串的子串,並且是迴文串。 本題要求對於給定的字符串,求出它的最長迴文子串的長度。可以採用Manacher算法在O(

原创 HDU1880 簡單字符串哈希

給定多個魔咒以及對應的效果,要求對於後面的魔咒或效果,及時給出對應的效果或魔咒。 建立兩張哈希表直接哈希就可以了。輸入需要稍微處理一下。哈希函數計算出來的值要保證是正的,否則讀數組會出錯。 #include <iostream> #inc

原创 POJ2785 和爲0的組合數(數的哈希)

給定4個組合A,B,C,D,這四個組合裏面的元素數目相等。要求找出所有的序列(a, b, c, d),四個數分別來自A,B,C,D四個組合,使得a + b + c + d = 0,輸出這樣的序列的總數。若兩個滿足條件的序列是完全相同的,它

原创 POJ1135 多米諾效應(單源最短路徑+枚舉)

有N個關鍵的多米諾骨牌,這些牌通過一些路徑相連接,這些路徑是由一排其他骨牌構成的。已知每一條路徑上的骨牌倒下需要的時間。現在從把編號爲1的關鍵骨牌推倒,問多長時間後所有的骨牌(包括關鍵牌和它們之間的路徑上的骨牌)都倒下,時間精確到小數點後

原创 Manacher算法求最長迴文子串的長度

const int N = 100005; char str[N]; //原字符串 char s[N << 1]; //用'#'作爲間隔填充之後的字符串 int p[N << 1]; //p[i]表示以第i個字符爲中心的迴文子串的長度

原创 POJ2823 滑動窗口中元素的最值(單調隊列)

給定一個大小已知的數組以及一個大小已知的滑動窗口,窗口每個時刻向後移動一位,求出每個時刻窗口中數字的最大值和最小值。 這個題是單調隊列的入門題。 求最大值:建立一個單調遞減隊列,元素從左到右依次入隊,入隊之前必須從隊列尾部開始刪除那些比當

原创 單調隊列

隊列是一種先進先出的數據結構,單調指的是數學中的單調性,包括嚴格的遞增或者遞減。 單調隊列指的就是嚴格符合單調性的隊列,它有兩個性質: 1、對於單調遞增隊列,從隊頭到隊尾的元素在某種比較標準下是嚴格遞增的,比如q(1, 2, 3, 4,

原创 POJ3294 出現在至少k個字符串中的最長子串

給定n個字符串,求出現在多於n/2個字符串中的最大長度的子串。 用樸素的搜索方法肯定不能滿足時間要求。因此還是使用後綴數組。 首先把問題變成判定性問題,即長度爲某個值的滿足條件的子串是否存在。這樣就可以使用二分來求解。 接着是把n個字符串

原创 POJ2185 最小覆蓋矩陣

給定一個由字符組成的矩陣,求出它的面積最小的覆蓋矩陣。 最小覆蓋矩陣類似於最小覆蓋子串,只不過是擴展到二維而已。 最小覆蓋子串必定是原串的前綴,對於矩陣,可以求出每一行的最小覆蓋子串的長度,只要對這些長度求最小公倍數,就可以獲得最小覆蓋矩

原创 POJ3349 重複的雪花(數字哈希)

每個雪花都有六個分支,用六個整數代表,這六個整數是從任意一個分支開始,朝順時針或逆時針方向遍歷得到的。輸入多個雪花,判斷是否有形狀一致的雪花存在。 簡單的數字哈希,要注意的是每種雪花可以由多種數字組合表示。 比如輸入的是1 2 3 4 5

原创 POJ3250 牛的視野(單調棧)

一羣高度不完全相同的牛從左到右站成一排,每頭牛隻能看見它右邊的比它矮的牛的髮型,若遇到一頭高度大於或等於它的牛,則無法繼續看到這頭牛後面的其他牛。 給出這些牛的高度,要求每頭牛可以看到的牛的數量的和。 把要求作一下轉換,其實就是要求每頭牛