原创 HDU 4662 MU Puzzle (水題)

題意:給定字符串,下面定義幾個操作: 1)將Mx變成Mxx,例如MII可以變爲MIIII 2)將III替換成U 3)去掉連續兩個U,例如MIUU可以變成MI 現在問你能不能將MI轉換成給定字符串。 思路:注意到以下幾個性質。第一,MI怎麼

原创 FZU 2124 喫豆人 (BFS)

題意:在一個N*M的矩陣裏面,有一個喫豆人,每次可以上下左右移動,每次移動消耗1s,有些格子有障礙,矩陣中有且僅有一個豆子,喫豆人沿直線可以吐舌頭喫豆,舌頭伸長一格消耗0.1s,喫完還要收縮回來,收縮一個也消耗0.1s。地圖中至多有一個加

原创 UVA 1401 & LA 3942 (字典樹Trie+遞推)

題意:給出一個由S個不同的字符串組成的字典和一個長字符串,問:把這個長字符串分解成若干個字典中出現的字符串,共有幾種分法。單詞可以重複使用。 思路:將所有字典中的單詞插入字典樹中,用d[i]表示str[i]到str[n]的所有分解法數。所

原创 POJ 2528 & UVA 10587(線段樹+離散+區間修改)

題意:在牆上貼海報,海報可以互相覆蓋,問最後可以看見幾張海報。 思路:線段樹直接做會TLE+MLE,因此需要離散。所謂離散就是將區段進行壓縮,但是又不改變區間的位置關係。 方法就是將區段的端點值去掉相同的進行排序,舉個例子: 給定4個區間

原创 HDU 4632 Palindrome subsequence(區間合併動態規劃)

題意:給定T串只含小寫字母的字符串,對於每串,輸出迴文字串的數目模10007 思路:區間合併,對於從第i個字符到第j個字符的串裏面           (1)如果str[i]!=str[j],則dp[i][j]=dp[i+1][j]+dp

原创 國家集訓隊論文分類整理

轉自:http://www.cnblogs.com/AbandonZHANG/archive/2012/07/21/2601889.html 國家集訓隊論文分類整理 距離ACM/ICPC的時間越來越少了,選擇性地看一些集訓隊論文是很有必

原创 HDU 4576 Robot (暴力)

題意:在一個圈上,起點是1,有m次移動,每次順時針移動wi格或者逆時針移動wi格,順時針和逆時針的概率都是1/2。問最後停留在l到r之間的概率 思路:顯然的遞推式子:p[i][j]=0.5*p[i-1]([j+w)%n]+0.5*p[i-

原创 短小精悍的線性時間素數篩法

輸入n,求n以內的所有素數 算法用兩個數組存儲數據: 一個是prime[],存儲n以內所有的素數,其index爲pi,初值爲0 一個是is_prime[i],表示自然數i(i<=n)是不是質數。 算法如下: linear_prime_si

原创 UVA 11384 Help is needed for Dexter (找規律)

題意:給一個正整數序列1,2,3....,n。每次操作可以從序列中選取任意多個數字同時減去一個相同的正整數,問至少多少次操作可以把所有數字變成0. 思路:首先,例如,1,2,3,0,1,2我們可以等價成1,2,3,。經過自己操作可以發現,

原创 FZU 2122 又見LKity (KMP)

題意:將給定字符串中的特定子字符串替換成另外一個字符串。 思路:水題,KMP算法尋找字符串並替換 #include<cstdio> #include<cstring> #define MAXN 50005 bool v[MAXN]; vo

原创 POJ 2886 Who Gets the Most Candies?(線段樹)

題意:N 個小孩圍成一圈,他們被順時針編號爲 1 到 N。每個小孩手中有一個卡片,上面有一個非 0 的數字,遊戲從第 K 個小孩開始,他告訴其他小孩他卡片上的數字並離開這個圈,他卡片上的數字 A 表明了下一個離開的小孩,如果 A 是大於

原创 POJ 3468 A Simple Problem with Integers(線段樹)

題意:給一串整數,每次使區段增減一個數,或者查詢區段內數字和 思路:線段樹模板題,用add標記。具體內容可參考代碼或者劉汝佳訓練指南。 #inclu

原创 POJ 2828 Buy Tickets(線段樹)

題意:有n個人(每個人價值爲val[i])依次從外面往隊伍中插隊,每次都會插在第pos[i]個位置,原本在pos[i]及其後面的人將會往後移一位,按最後隊伍的順序輸出這些人價值。 思路:正着模擬顯然超時,可以這樣想,每次入隊的人位置由兩個

原创 POJ 3225 Help with Intervals(線段樹)

題意:區間交、並、減、補 思路:用線段樹的葉子節點記錄該點是否被區間覆蓋,因爲有開區間的情況,因此考慮離散,將數值乘以2。 U:把區間[l,r]覆蓋成1 I:把[-∞,l)(r,∞]覆蓋成0 D:把區間[l,r]覆蓋成0 C:把[-∞,l

原创 UVALive 3635 Pie (二分答案)

題意:有F+1個人來分N個圓形派,要求每個人得到的派必須是一整塊的,不能是幾塊拼在一起的,而且每個人得到的派的大小一樣,問每個人最多能得到的派的面積。 思路:一開始拿到題目,我嘗試推公式,後來覺得實在找不到規律,看了書,發現是二分答案,把