原创 UPC:2526 Color the necklace

http://acm.upc.edu.cn/problem.php?id=2526   這個題是http://blog.csdn.net/kkkwjx/article/details/21525325的加強版,也是Polya定理非常經典的

原创 ZOJ:2672 Fibonacci Subsequence(動態規劃+hash)

題意:在給定的數組裏,尋找一個最長的序列,滿足ai-2+ai-1=ai。並輸出這個序列。 思路: 很容易想到一個DP方程 dp[i][j]=max(dp[k][i])+1. (a[k]+a[i]==a[j],1<=k&&k<i) d

原创 POJ:2796 Feel Good(單調棧)

題意:給一個數組,計算某段區間的和乘以該區間最小值,要求該值最大並輸出區間範圍。 思路:用一個單調棧,計算以某數爲區間的最小值的區間左右範圍。具體來說,如果棧頂爲空則left[i]=1;如果非空,比較a[i]與棧頂元素的大小,如果a[i]

原创 C++ const用法詳解

const可以用來定義常量。 const寫在數據類型前或後是等價的,如下兩種寫法是等價的。 const int a=10; int const b=20; 常量將不能被修改,因此在定義時必須初始化。 以下寫法將不能通過編譯。 cons

原创 ZOJ:3641 Information Sharing(並查集)

題意:不說了。。 思路:很明顯的並查集。數據量比較小,集合可以用set維護。唯一一個值得注意的地方是可能會爆內存,因此每次合併以後原來的set要清空。 #include <iostream> #include <algorithm> #i

原创 九度OJ 1503:二叉搜索樹與雙向鏈表

#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<cmath> #include<

原创 UPC:2225 The number of steps(概率DP)

題意:按題目要求問走出迷宮的期望。 思路:比較明顯的概率DP。 #include <iostream> #include <vector> #include <cstring> #include <cstdio> using namesp

原创 UPC:2226 Contest Print Server(模擬)

題意:模擬。 思路:注意比較坑的地方。如果Team1請求打印,而此時計數達到s,那應該先輸出一個Team1 request 0 pages。 #include <iostream> #include <vector> #include

原创 POJ:3670 Eating Together(動態規劃)

題意:每次可以改變一個數字,要求使給定的數列變成單調遞增或遞減,求最小操作數 思路:簡單動規。設dp[i][j]表示以第i個數爲最後一個數且數值爲j時候的最優解,就遞增時而言,dp[i][1]可以從dp[i-1][1]轉移,dp[i][2

原创 UPC:2219 A^X mod P(預處理空間換時間)

題意:按公式求f[x],再按公式求結果。 思路:直接搞的話f[i]可能高達10^9,n爲10^6,即使用快速冪也會超時。用空間換時間是一種常見的降低複雜度的辦法。對於任意一個數字X,它可以變成X=a*N+b(N爲常數)。基於這個思路可以把

原创 UPC:2536 Changlong(二進制技巧)

http://acm.upc.edu.cn/problem.php?id=2536 題意:給你一個數組,有一個數出現q次,其餘數字出現p次。現在要找出這個出現一次的數來。 內存卡的很緊,只要1MB。 思路:開一個數表示二進制的每一位,10

原创 ZOJ:3633 Alice's present(離線處理)

題意:給一串數字,每次區間查詢,輸出從右往左第一個重複的數字,如果沒有重複數字則輸出"OK"。 思路:據說此題暴力也能過,但應該不是正解。我的思路是用離線處理,先把所有查詢讀入,並保存爲區間,根據區間右端點存進相應的vector數組中(區

原创 UPC:2224 Boring Counting(二分+劃分樹)

題意:給一串數字,每次查詢區間內大於等於A小於等於B的數字個數。 思路:二分+劃分樹。劃分樹可以求區間內第k小的數字,配合二分可以求到某個數字在區間內是第幾小數字。 #include <iostream> #include <vector

原创 ZOJ:3802 Easy 2048 Again (狀態壓縮)

題意:1維的2048。 思路:很好的一道DP。 可以觀察如4、16、8這樣的組合,其中的4就永遠都不會被合併,因爲以後的結果只能是越來越大。所以可以被合併的數列特徵是遞減序的,如32、16、4。這樣我們可以以當前組合中的末尾遞減序列爲狀態

原创 常見的Linux命令與shell語句整理

輸出文件file的第10行內容。 sed -n '10p' file 輸出文件file的第5行,第7行,第10行內容。sed -n '5p;7p;10p;' file 輸出文件file的第4到8行內容。sed -n '4,8p' f