原创 dd大牛的《揹包九講》

  P01: 01揹包問題  題目  有N件物品和一個容量爲V的揹包。第i件物品的費用是c[i],價值是w[i]。求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。  基本思路  這是最基礎的揹包問題,特點是:

原创 【HDU 2087】剪花布條(kmp)

點擊打開題目 剪花布條 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s):

原创 【51nod 教程】0-1揹包問題(動態規劃)

有n件物品,第i件物品(I = 1,2,3…n)的價值是vi, 重量是wi,我們有一個能承重爲m的揹包,我們選擇一些物品放入揹包,顯然放入揹包的總重量不超過m。我們要求選擇物品的總價值最大,請問如何選擇?這裏我們假設所有出現的數都是

原创 【HDU 3336】Count the string(kmp)

點擊打開題目 Count the string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota

原创 【51nod 教程】最長公共子序列問題(動態規劃)

一些概念: (1)子序列: 一個序列A = a1,a2,……an,中任意刪除若干項,剩餘的序列叫做A的一個子序列。也可以認爲是從序列A按原順序保留任意若干項得到的序列。 例如: 對序列 1,3,5,4,2,6,8,7來說,序列3

原创 【51nod 教程】編輯距離問題(動態規劃)

給定兩個字符串S和T,對於T我們允許三種操作: (1) 在任意位置添加任意字符 (2) 刪除存在的任意字符 (3) 修改任意字符  問最少操作多少次可以把字符串T變成S?  例如: S=  “ABCF”   T = “DBFG

原创 【51nod 教程】最長單增子序列(LIS—動態規劃)

(LIS Longest Increasing Subsequence)給定一個數列,從中刪掉任意若干項剩餘的序列叫做它的一個子序列,求它的最長的子序列,滿足子序列中的元素是單調遞增的。 例如給定序列{1,6,3,5,4},答案是3

原创 【HDU 1711】Number Sequence(kmp)

點擊打開題目 Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su

原创 【POJ 3041 】Asteroids (匈牙利算法最小點覆蓋&二分圖)

C - Asteroids Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practic

原创 字典樹講解+模板

字典樹(講解+模版) 又稱單詞查找樹,Trie樹,是一種樹形結構,是一種哈希樹的變種。典型應用是用於統計,排序和保存大量的字符串(但不僅限於字符串),所以經常被搜索引擎系統用於文本詞頻統計。它的優點是:利用字符串的公共前綴來節約存儲

原创 [POJ 2406]Power Strings(kmp)

點擊打開題目 Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 50554   Accepted: 21087 Descri

原创 【HDU 4552】怪盜基德的挑戰書(kmp)

點擊打開題目 怪盜基德的挑戰書 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission

原创 【HDU 2063】過山車(二分圖)

A - 過山車 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 20

原创 【51nod 教程】矩陣取數問題(動態規劃)

給定一個m行n列的矩陣,矩陣每個元素是一個正整數,你現在在左上角(第一行第一列),你需要走到右下角(第m行,第n列),每次只能朝右或者下走到相鄰的位置,不能走出矩陣。走過的數的總和作爲你的得分,求最大的得分。 初看此題,你的思路是什

原创 LIC(最長子序列)

1.O(n²)算法 定義dp[i]:以ai爲結尾的最長上升子序列的長度 以ai結尾的上升子序列是: ①只包含ai的子序列 ②在滿足j<i並且aj<ai的以aj爲結尾的上升子列末尾,追加上ai後得到的子序列 綜合以上兩種情況,便可以得到