原创 a^b%c(蒙格馬利快速冪模算法)

 蒙格馬利快速冪模算法:   將p按二進制寫出來,應該很容易理解。r依次是1,2,4,8,16,32,……次冪的結果。當所在二進制的位爲1時,k乘上r。最後返回k。   由x*y%z=(x%z)*y%z ,運算過程不停模m。   a^p%

原创 hdoj 1316 How Many Fibs?(大數)

題目大意:給出a ,b(a <= b <= 10^100),求區間[a,b]內含fib數的個數。 思路:初始化fib數列至100位(第480個)。從頭開始比較 小於a的的個數,從尾開始比較小於等於b的個數,相減即爲所求。   需先把a,b

原创 hdoj 1800 Flying to the Mars (字符串哈希函數)

題目大意:輸入N(N<3000)個level (less than 30 digits),求處於同一level的最多人數。 思路:對每個level(字符串)進行哈希, 存入哈希表,線性探測再散列解決衝突。   附常用字符串哈希函數: in

原创 POJ 2479 + POJ 2593(DP 最大雙子序列 ^_^)

題目大意:序列a[] ,求如下S.   思路:自左向右和自右向左分別DP。          用left[i]表示序列1—i所能取最大和。          用right[i]表示序列n—i所能取到的最大和。 ans=max(left

原创 POJ 1458 || HDOJ 1159 Common Subsequence (DP)

題目大意:最長公共子序列。   思路:LCS(i,j)定義爲 str1 的前i個序列 與 str2 的前j個序列 的最長公共子序列長度。    LCS(i,j) =LCS(i-1,j-1)+1             (str1 [i]

原创 hdoj 1238 (substring)

暑假了 , 貼貼很久前的代碼,今年暑假要AC。   #include <iostream> #include <string> using namespace std; void Reverse(char str[],int n) {

原创 zoj 1986(最長上升子序列)

題目大意:最長遞增子序列(n可達到40000) 思路:len保存最長遞增子序列長度,折半查找,時間複雜度爲O(n*lgn).   在網上找到的,這裏有很詳細的解釋 http://argo.sysu.edu.cn/bbsanc?path=b

原创 hdoj 1286 (歐拉函數)

題目大意:赤裸裸的歐拉函數.   設φ(m)表示不超過m,而和m互質的正整數的個數,則φ(m)稱爲歐拉函數. 定理1: 設p爲質數,則我們有 1)    φ(p) = p - 1 ; 2)    若n爲正整數,則φ(pn) = pn(

原创 解決Linux上Dr.com

Linux新手,系統Ubuntu10.10,學校通過drcom驗證上網。   A.使用drcom-client-PUM1.0(http://www.drcom-client.org),結果:失敗   二進制包安裝後提示升級版本。源碼包按網

原创 hdoj 2202 最大三角形 (凸包)

題目大意:給定n(3<=n<=50000)個點,求其中任意三個點組成的三角形面積最大,輸出該面積. 思路:求凸包,對凸包中任意三個點進行枚舉.  其中可利用凸包的特點進行剪枝. 另外給出三點座標,如何求構成的三角形面積. 如點(x1,

原创 POJ 3979-3982~

/* 睇到學弟們在做~跟麥做~好弱~不過都有D收穫~啊holiday好懶吶~ */ /*3979*/ #include <stdio.h> int gcd(int x,int y) { int r; while((r=x%

原创 hdoj 1232+hdoj 1272 (並查集)

//hdoj 1232 #include <iostream> using namespace std; int DisjSet[1001]; int ans; int Find(int X) { if(DisjSet[X]<0)

原创 hdoj 1428 漫步校園 (搜索)

題目大意:矩陣 從(1,1)走到(n,n)點,規定"從A區域到B區域僅當存在一條從B到機房的路線比任何一條從A到機房的路線更近"。 思路: 設b[i][j] 爲從(i,j)到(n,n)的最小時間。則從(i,j)到(i',j') 僅當 b

原创 簡易mp3播放器(SDL)

寫一個簡單的mp3播放器,去掉了界面。有個問題就是不能自動播放下一曲。     gcc -o easymp3 easymp3.c -L/usr/lib -lSDL -lSDL_mixer   ./easymp3 ~/mp3/*.mp3  

原创 USACO s1.4 Packing Rectangles

題目大意:給出4個矩形(1<=任意邊長<=50),尋找最小的矩形可以豎直容納給出的4個矩形. 思路: 有以上6種情況的堆放方式.再通過排列與旋轉枚舉所有情況.另外,第4第5種計算的結果相同,所以合併爲一種情況.所以總共枚舉有4!