給乙個由小寫字母組成的字串,我們可以用一種簡單的方法來壓縮其中的重複資訊。壓縮後的字串除了小寫字母外還可以(但不必)包含大寫字母r與m,其中m標記重複串的開始,r重複從上乙個m
(如果當前位置左邊沒有m,則從串的開始算起)開始的解壓結果(稱為緩衝串)。bcdcdcdcd可以壓縮為bmcdrr,下面是解壓縮的過程:
已經解壓的部分
解壓結果
緩衝串bbb
bmb.bmcbcc
bmcd
bcdcd
bmcdr
bcdcd
cdcd
bmcdrr
bcdcdcdcd
cdcdcdcd
輸入僅一行,包含待壓縮字串,僅包含小寫字母,長度為n。
輸出僅一行,即壓縮後字串的最短長度。
輸入 #1
aaaaaaa
輸出 #1
5輸入 #2
bcdcdcdcdxcdcdcdcd
輸出 #2
12分析:
**
1 #include2#define re register int
3#define ll long long
4#define maxn 55
5using
namespace
std;
6char
as[maxn];
7int dp[maxn][maxn][3];8
intn;
9int check(int l,int
r)//
判斷前一段和後一段是否相等
16int
main()
30for(re k=l;k)
31 dp[l][r][1]=min(dp[l][r][1],min(dp[l][k][0],dp[l][k][1])+min(dp[k+1][r][0],dp[k+1][r][1])+1);//
後面有m的時候 32}
33 printf("
%d\n
",min(dp[1][n][1],dp[1][n][0]));//
輸出最後的結果
34return0;
35 }
雖然渺小,但不放棄。
SCOI2007 修車 題解
上古網路流題 為了便於考慮每個決策的貢獻,把每個工人的決策拆成n個彼此獨立的決策 即其修的倒數第i個車是什麼。因為此車後 含此車 有i人要多等t,故貢獻為t n 以此拆點建圖,以貢獻為費用跑 二分圖 費用流即可,由費用流性質可知每人修車順序必合法 注意本題n,m順序有點反常 include incl...
SCOI2007 壓縮 區間dp
這道題我是看題解2過的,但是對 的理解存在問題,所以自個口胡一下。對於0與1兩種狀態,我們先考慮1 很明顯1要在0的基礎上進行,f l r 1 min f l r 1 min f l k 0 f l k 1 min f k 1 r 0 f k 1 r 1 1 這裡面的 1就是補m的操作,假如在l到r...
SCOI2007 最大流 蜥蜴
非常直觀的建圖方法。對於有蜥蜴的格仔,從源點向該點連一條容量為1的邊,對於每個石柱拆點u,u 連邊u u 容量為石柱高度 對於任意兩個可以到達的石柱u,v,連邊u v,容量為inf 對於任意乙個可以跳出邊界的石柱,連邊u t,容量為inf 做一次最大流即為最多能逃出的蜥蜴數量 include inc...