原创 HDU 4300 Clairewd’s message(擴展KMP)題解

題意:先給你一個密碼本,再給你一串字符串,字符串前面是密文,後面是明文(明文可能不完成整),也就是說這個字符串由一個完整的密文和可能不完整的該密文的明文組成,要你找出最短的密文+明文。 思路:我們把字符串當做全是密文然後解密成明文,這樣前

原创 POJ 2195 Going Home(最小費用最大流)題解

題意:給你一張圖,有k個人和k個房子,每個房子只能住一個人,每個人到某一房子的花費爲曼哈頓距離,問你讓k個人怎麼走,使他們都住房子且花費最小。 思路:我們把所有人和超級源點相連,流量爲1花費爲0,所有房子和超級匯點相連,流量爲1花費爲0,

原创 POJ 2923 Relocation(狀壓DP+01揹包)題解

題意:給你汽車容積c1,c2,再給你n個包裹的體積,問你最少運幾次能全運走 思路:用2進製表示每次運送時某物在不在此次運送之中,1在0不在。我們把運送次數抽象成物品價值,把狀態抽象成體積,用一個dp[ i ] 記錄完成狀態i的最少步數那麼

原创 已轉到博客園

現在博客園更新 https://www.cnblogs.com/KirinSB/

原创 POJ 1185 炮兵陣地(狀壓DP)題解

思路:和上一篇思路一樣,但是這裏要求最大能排幾個,這裏要開三維,記錄上次和上上次的狀態,再一一判定,狀態轉移方程爲 dp[i][j][k] = max(dp[i][j][k],dp[i - 1][k][t] + num[j]) 代碼:

原创 CodeForces - 55D Beautiful numbers(數位DP+Hash)題解

題意:美麗數定義:一個正數能被所有位數整除。求給出一個範圍,回答這個範圍內的美麗數。思路:一個數能被所有位數整除,換句話說就是一個數能整除所有位數的LCM,所以問題就轉化爲一個數能否被所有位數的LCM整除。按照一般的思想,直接開三維dp[

原创 HDU 4990 Reading comprehension(矩陣快速冪)題解

思路: 如圖找到推導公式,然後一通亂搞就好了 要開long long,否則紅橙作伴 代碼: #include<set> #include<cstring> #include<cstdio> #include<algorithm> #d

原创 HDU 1438 鑰匙計數之一(狀壓DP)題解

思路:每個槽有4種深度,一共有2^4種狀態。然後開4維來保存每一次的狀態:dp[ 第幾個槽 ][ 當前狀態 ][ 末尾深度 ][ 是否符合要求 ]。代碼:#include<cstdio> #include<map> #include<se

原创 HDU 3709 Balanced Number(數位DP)題解

思路:之前想直接開左右兩邊的數結果爆內存...枚舉每次pivot的位置,然後數位DP,如果sum<0返回0,因爲已經小於零說明已經到了pivot右邊,繼續dfs只會越來越小,且dp數組會炸注意一下一些細節:dp開long long,注意前

原创 POJ - 3254 Corn Fields(狀壓DP)題解

思路: 參照blog,用狀壓DP做,和題解稍微有點不一樣,我這裏直接儲存了狀態而不是索引。 這一題的問題是怎麼判斷相鄰不能種,我們用2進制來表示每一行的種植情況。我們將每一行所能夠造的所有可能都打表(即認爲每一塊都能種),然後將每一行不能

原创 HDU 5950 Recursive sequence(矩陣快速冪)題解

思路:一開始不會n^4的推導,原來是要找n和n-1的關係,這道題的MOD是long long 的,矩陣具體如下所示 最近自己總是很坑啊,代碼都瞎吉壩寫,一個long long的輸入寫成%d一直判我TLE,一度懷疑矩陣快速冪地複雜度orz

原创 FZU 1901 Period II(KMP中的next)題解

題意:給你一串字符串,問你前後綴相同情況有幾種,並輸出後綴位置(?這裏一直沒看懂length是什麼,但是這樣理解答案也對,然後還要加上本身長度) 思路:這裏好好講講next的用法。我們都知道next代表前後綴匹配值,現在我們以下面這個字符

原创 HDU 4272 LianLianKan (狀壓DP+DFS)題解

思路: 用狀壓DP+DFS遍歷查找是否可行。假設一個數爲x,那麼他最遠可以消去的點爲x+9,因爲x+1~x+4都能被他前面的點消去,所以我們將2進制的範圍設爲2^10,用0表示已經消去,1表示沒有消去。dp[i][j]表示棧頂是i當前狀態

原创 HDU - 3068 最長迴文(馬拉車Manacher)題解

思路:馬拉車裸題,我們用一個p[i]數組代表以i爲中心的最大回文半徑。這裏用了一個小技巧,如果一個串是aaaa這樣的,那我們插入不相干的字符使它成爲#a#a#a#a#,這樣無論這個串是奇數還是偶數都會變成奇數,容易處理。馬拉車的效率在於,

原创 CodeForces 450B Jzzhu and Sequences(矩陣快速冪)題解

思路: 之前那篇完全沒想清楚,給刪了,下午一上班突然想明白了。 講一下這道題的大概思路,應該就明白矩陣快速冪是怎麼回事了。 我們首先可以推導出 學過矩陣的都應該看得懂,我們把它簡寫成T*A(n-1)=A(n),是不是有點像等比?然後我們