原创 C, C++中全局變量的默認值

     在GCC編譯器下各個類型的全局變量的默認值:  表示數字的變量類型默認值都爲0  bool型默認值爲false  string型默認值爲空字符串 char 型比較特殊。char類型默認值爲'\0', 即字符串結束標誌,其整數值爲

原创 UVA437(DP)

題意:求所給的n種石頭最高能組成多高的塔,其中組成塔的石頭的兩條邊必須分別大於它上面的石頭的兩條邊。每種石頭有無限個並且可以隨意翻轉。 這道題容易迷惑人的一點是石頭是無限的,但仔細考慮由於有大小的限制,所以同一個塔每種石頭最多用2次,這樣

原创 UVA1625 Color Length(附 劉汝佳代碼)

這是劉汝佳《算法競賽入門經典第二版》的一道例題,只看書上的解釋並沒有理解,隨後結合着代碼才理解了。 解題思路:用d[i][j]表示序列1移走i個元素和序列2移走j個元素的最小“代價”, 這個代價指的是由那些已經移出的字母合併而來的序列中已

原创 hdu5400

根據題意,用數組ch[i]記錄a[i]和a[i - 1]的差值, len[i]記錄到a[i]爲止形成的最長的序列長度。根據題意len[i] = len[i-1] + 1(即a[i] 可以添加的前面的序列)的情況有: 1. ch[i] 等於

原创 UVA12563 Jin Ge Jin Qu hao(DP, 揹包+技巧)

題意:求在給定時間內,最多能唱多少歌曲,在最多歌曲的情況下,使唱的時間最長。 該題類似於01揹包問題,可用01揹包問題的解題思路來求,每個歌曲相當於物品,歌曲的長度相等於物品重量,每個歌曲的“價值”爲1。由於金歌勁曲時間最長,所以最後要

原创 hdu5384(AC自動機)

這道題是多模字符串匹配的題,需要用到AC自動機。直接套模板AC。 #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include

原创 組合數學的一些常見公式

一.特殊的排列組合: 1.在n個不同物體中,可重複地選取r個物體的排列數爲: n^r; 2.在n個不同物體中,可重複地選取r個物體的組合數爲C(n+r-1, r); 3.在從A={1,2,…n}中取r個不相鄰的數進行組合,其組合數爲C(n

原创 hdu5399

根據題意可知,要滿足題意給的那個合成函數,每一個函數f[i] 與{1,2, ···, n} 都必須是雙射關係,即不存在f[i][j] == f[i][k](j != k), 因此對於一個不確定的函數, 其可能的情況有n!個。如果用cnt

原创 hdu5317 RGCDQ

首先計算出所有的f,這裏容易超時,注意優化:先計算出所有質數,然後在利用這些質數去求f。 易知f中的最大值爲7,然後用一個數組b[i][j]記錄f[1]到f[i]中有多少個j(j 爲1到7),這個用遞推可得。 那麼如果給定區間L, R,

原创 UVA 11400(DP)

題意給定n種類型燈泡,每個燈泡給出其電壓v,電源花費k,每個燈的花費c和需求量l,現在通過用電壓大的燈泡替換某些電壓小的燈泡來減小總花費,求最小的花費。 首先要說明的是,爲求得最小花費,對於某種燈泡,要麼全部替換,要麼全不替換,這個很容易

原创 Trie樹的建立與簡單應用

Trie樹即字典樹。是把多個串中的字母逐個插入到一開始只有根結點的樹上二構成的樹。Trie樹的邊表示的是模式串中的字母,從根結點走到任意節點經過的路徑稱爲路徑字符串。從根結點到葉子節點的路徑字符串即爲一個原來建樹的模式串。Trie在解決涉

原创 java,swing中setvisible()使用注意事項

java中的setvisible(true)目的是使控件可以顯示出來,如果該控件已經被顯示出來,那麼該方法是控件顯示在窗口的最前方。 但其使用的位置需要注意。setVisible的對象一般是該對象的使用者調用的。如果setVisible在

原创 uva1471

這是LIS的變形,題意是求一個序列中去掉某個連續的序列後,能得到的最長連續遞增序列的長度。   用DP的解法是:吧這個序列用數組a來記錄,再分別用兩個數組f記錄以i結尾的最長連續遞增序列的長度,g[i]記錄以i開頭的最長連續遞增序列。然後

原创 POJ3630(Trie樹)

題意:求給定的多個串中是否存在,某個串是另一個串的前綴。 解題思路:使用Trie樹。在每次插入一個串的同時判斷。對於該問題,只存在以下兩種情況:  1.當前插入的串的前綴是前面的某個串。對於這種情況,把前面插入的串的最後一個節點記爲危險節