原创 Codeforces 354C. Vasya and Beautiful Arrays【DP,暴力】

題目大意: 有一組數,你可以對每一個數做減法,減去的數不超過k,問最後你最大能得到的整個數組的GCD是多少 做法: 最後要求的是GCD(假設爲g),那麼也就是說,對於數組中的數a[i]來說,減去某個不大於k的值之後,就能被g整除;換句話說

原创 Codeforces 380C. Sereja and Brackets【線段樹】

題目大意: 給出一串括號,有m個查詢(包含a,b)問區間[a,b]之間有多少個匹配的括號 做法: 處理兩個數組r[i](代表從1到i之間有多少個已匹配的右括號),l[i](代表從1到i之間有多少個沒有匹配的左括號)。我們要算[a,b]之間

原创 Codeforces 379D. New Year Letter【動態規劃、暴力枚舉】

題目大意: 給出如下定義: s(n)=s(n-2)+s(n-1),其中s爲字符串,+爲串聯,比如s1="ab",s2="cd",s1+s2="abcd",s2+s1="cdab"。 給出k,x,n,m,求滿足使字符串s(k)中子串“AC

原创 Codeforces 371D. Vessels【並查集】

題目大意: 給出一堆從上到下疊起來的容器,有兩種操作:第一種是在編號爲i的容器中加入x的水(保證水溢出之後會流到下一個最近的容器(如果存在)中);第二種是查詢編號爲i的容器中有多少水。 做法: 首先,想想暴力?但是如果直接暴力,那肯定超時

原创 Codeforces 372B. Counting Rectangles is Fun【動態規劃,暴力枚舉】(lowbit()小用法)

題目大意: 給出一個由0,1構成的矩陣,詢問(a,b)到(c,d)兩個點之間的只含有0的矩形有多少個。 方法: 由於矩陣不大,最多40*40,而且詢問量很大(10^5)由此我們考慮o(1)輸出答案,首先用一個四維數組預處理出答案,最後直

原创 hdu 4819 Mosaic【二維線段樹】

題目大意: 給出一個矩陣,有一種操作:x,y,l,將(x,y)元素修改爲,以(x,y)爲中心,尺寸爲l*l的矩陣中(min+max)/2。 就是一個裸的二維線段樹,一維是普通線段樹,二維每個區間都有一個線段樹。 #include <i

原创 Codeforces 319B. Psychos in a Line【棧】

題目大意: 一串數列,每一個值如果大於相鄰右一位的值的話,那麼就可以把右邊這個值“吃掉”(右一位消失,原來的值不變),問需要吃多少次才能到達無法再吃的狀態。 做法: 利用棧。遍歷一遍數組,處理每個值的時候,如果棧頂的元素小於該值,那麼將

原创 Codeforces 144D. Missile Silos【dijkstra】

題目大意: 給出一個圖,一個源點s,問距離這個源點的最短距離恰好爲 l 的點有多少個(這個點可以在邊上,可以在節點上)。 做法: 首先用dijkstra算法求出每個節點到s的最短路d[]數組,然後對於每條邊w(u,v)來說有下面三種情況

原创 Codeforces 463D. Gargari and Permutations【DP】

題目大意: 給出1~n的k個排列(2<=k<=5),要求其中的最長公共子序列。 做法: 算是不難的DP,dp[i]表示以i爲結尾的最長公共子序列的長度,由於每個數在一個排列中只可能出現一次,我們用一個二維數組pos[i][j]表示數字j

原创 Codeforces 377B . Preparing for the Contest【優先隊列】

題目大意: 有m個bug,n個學生,每個bug有自己的複雜值,每個學生有自己的能力值,只能解決複雜值小於自己能力值的bug,且每天只能解決一個bug,但是每個學生處理bug需要報酬,問在報酬不超過s的情況下,在最短的時間內,能將bug全部

原创 Codeforces 148E. Porcelain【多重揹包】

題目大意: 有一個公主一生氣就喜歡摔東西。現在有很多個櫃子,每個櫃子裏面裝着很多物品,公主每次摔東西只能隨機的選擇一個櫃子,拿出最左邊或者最右邊的一個物品摔碎,給出公主最多生氣的次數,求生完氣之後,公主摔掉物品的價值的最大總和。 做法:

原创 Codeforces 156B. Suspects

題目大意: 福爾摩斯正在處理一件案子。此時已經抓捕了n個嫌疑人,裏面只可能有一個是真正的犯人。福爾摩斯正在審問這些嫌疑人。每個嫌疑人的回答只有兩種,一種表明他說編號爲i的嫌疑人不是犯人,用-i表示;另一種表明他說編號爲i的嫌疑人是犯人,用

原创 Codeforces 132C.Logo Turtle【DP,dfs】

(不好意思。。剛剛貼錯題目名稱了。。已訂正) 題目大意: 在一根數軸上有一隻機器龜,它能夠聽從人們給它的指令做出向前走一步(F)和向後轉(T)的操作。給出初始操作,你最開始有修改n步指令的權利(每一個指令可以被修改很多次),問在你修改n次

原创 Codefroces 223A - Bracket Sequence【棧優化】

題目大意: 有一串只含有 "("  ")"  "["  "]" 的序列,問在該序列的 左右括號能分別配對的 所有子串中的含有方括號的個數的最大值,並輸出相對應的子串。 做法: 利用一個棧來維護,每次如果有能與棧頂的元素配對的右邊括號時,

原创 Codeforces 362C. Insertion Sort【構造】

題目大意: 給出一個排列,問交換某兩個數之後,該排列的逆序數最小爲多少,並找出可以交換多少對數能夠得到這樣的逆序數。 做法: 由於數據範圍只有5000,那麼直接暴力O(n^2)也是可行的,既然如此,我們暴力枚舉兩個交換的元素的下標,思考