SCOI2007 壓縮 題解

2022-04-05 06:12:35 字數 1140 閱讀 3770

給乙個由小寫字母組成的字串,我們可以用一種簡單的方法來壓縮其中的重複資訊。壓縮後的字串除了小寫字母外還可以(但不必)包含大寫字母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...