rainbow與freda染旗
fromthis_poet
背景 background
freda:aya rainbow,怎麼沒看見你城堡掛旗子呀?
rainbow:我城堡旗子太難看了腫麼辦t_t
freda:lala~那好辦,我可以幫你染色呀~
rainbow:嗯嗯,那就試試吧~
描述 description
rainbow城堡的旗子是乙個有n個基本單位的長條》_<,每個單位都會被染成前m個大寫字母當中的乙個顏色。可是,rainbow認為,兩個相鄰的單位有相同的顏色很難看的說。所以,rainbow需要改動一些單位的顏色,使得不存在兩個相鄰的單位顏色相同。當然了,那些被改動的單位改動之後的顏色也是前m個大寫字母當中的乙個。rainbow想請你幫忙計算,它最少要改動多少個單位的顏色才能讓旗子好看呢?
輸入格式 inputformat
第一行兩個整數n、m,表示旗子組成的基本單位數目和顏色的範圍。
接下來一行乙個長度為n的字串,字串的每個字元都是在前m個大寫字母的範圍內的,表示rainbow的旗幟。
輸出格式 outputformat
一行乙個整數表示rainbow最少改動的單位數目。
樣例輸入 sampleinput
[複製資料]
樣例輸出 sampleoutput
[複製資料]
資料範圍和注釋 hint
樣例解釋:一種改動方法是abcaca。當然,還可能有別的改動方法。
對於30%的資料,n<=20.
對於100%的資料,n<=10^5,1<=m<=26.
時間限制 timelimitation
每個測試點1s
第一次自己做出來一道dp題,雖然很簡單。。。雖然還可以用貪心寫。。。。。
暴力dp f[i,j]表示 1..i面旗子,第i面旗子染成顏色j的最小染色方案。
顯然第i面旗子的方案由第i-1面旗子的方案轉移而來
對於第i面旗子有兩種決策,不染色,或染成顏色j。
1:第i-1面旗子染成顏色 j1 且 j1<>a[i]
f[i,a[i]]:=min(f[i,a[i]],f[i-1,j1])
2: 第i-1面旗子染成j1色,第i面旗子染成j色,且(j<>j1)( j<>a[i])
f[i,j]:=min(f[i,j],f[i-1,j1])+1
最後輸出f[n,i]裡面最小的值 1<=i<=m
var n,m,i,j,j1,ans:longint;
a:array[1..100000]of longint;
f:array[0..100000,1..26]of longint;
x:char;
function min(a,b:longint):longint;
begin
if a>b then exit(b) else exit(a);
end;
begin
readln(n,m);
for i:=1 to n do
begin
read(x);
a[i]:=ord(x)-64;
end;
fillchar(f,sizeof(f),$7f);
for i:=1 to m do f[0,i]:=0;
f[1,a[1]]:=0;
for i:=1 to n do
begin
for j1:=1 to m do //i-1
begin
if j1<>a[i] then f[i,a[i]]:=min(f[i,a[i]],f[i-1,j1]);
for j:=1 to m do if j<>a[i] then //change
if j<>j1 then f[i,j]:=min(f[i,j],f[i-1,j1]+1)
end;
end;
ans:=maxlongint;
for i:=1 to m do ans:=min(ans,f[n,i]);
writeln(ans);
readln;readln;
end.
整數劃分(動歸)
將n分為若干個不同整數的和,有多少種不同的劃分方式,例如 n 6,共4種。由於資料較大,輸出mod 10 9 7的結果即可。input 輸入1個數n 1 n 50000 output 輸出劃分的數量mod 10 9 7。sample input6sample output4 include incl...
動歸 編輯距離
設a和b是兩個字串。我們要用最少的字元操作次數,將字串a轉換為字串b。這裡所說的字元操作共有三種 1 刪除乙個字元 2 插入乙個字元 3 將乙個字元改為另乙個字元 皆為小寫字母!輸入格式 第一行為字串a 第二行為字串b 字串a和b的長度均小於2000。輸出格式 只有乙個正整數,為最少字元操作次數。輸...
動歸 道路遊戲
題目描述 小新正在玩乙個簡單的電腦遊戲。遊戲中有一條環形馬路,馬路上有n 個機械人工廠,兩個相鄰機械人工廠之間由一小段馬路連線。小新以某個機械人工廠為起點,按順時針順序依次將這n 個機械人工廠編號為1 n,因為馬路是環形的,所以第n 個機械人工廠和第1 個機械人工廠是由一段馬路連線在一起的。小新將連...