原创 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!