51nod1621 花錢買車牌

2021-08-09 17:51:50 字數 1148 閱讀 3387

乙個車牌號由n位數字組成。如果乙個車牌至少有k位數字是相同的,那麼我們就說這個車牌漂亮的車牌。現在華沙想要改變他自己的車牌,使得他的車牌變得漂亮。當然,改車牌是要花錢的。每改變一位數字所要花費的費用等於當前位上的新舊數字之差的絕對值。那麼總費用就是每位上所花費用的總和。

舉例如下,

舊牌為0123,新牌為7765,那麼對應第一位所花費用為|0-7|=7,第二位為|1-7|=6,第三位為|2-6|=4,第四位為|3-5|=2,總和為7+6+4+2=19

華沙想用最少的錢,使他的車牌變得漂亮起來。現在給定n,k,和舊牌的號碼,計算換牌的最少費,以及新牌的號碼,

如果最少費用的號碼有多個,我們取字典序最小的那個。

樣例解釋:

在樣例中,把第二個數字換成「8」花費|9-8|=1,把第五個數字換成「8」也花了1。

把第六個數字換成「8」花費|6-8|=2.總費用為1+1+2=4,新號碼為「888188」

兩個長度為n的序列比較方法如下。

存在兩個序列x,y,長度都是n。

如果存在i(1≤i≤n)和任意j(1≤j<i)使得 xi

<yi

並且 xj

=yj

,那麼我們就說x比y小。

input

單組測試資料

第一行,兩個由空格隔開的數字n和k(2≤n≤10^4,2≤k≤n),表示舊牌的位數,和至少要有k位數字相同才能構成漂亮的車牌。

第二行有n位數字,代表華沙的舊車牌。(舊車牌中只有數字)。

output

共兩行,

第一行,乙個整數,代表換牌的最小費用,

第二行,n位數字,表示新的車牌。

如果最小費用的車牌有多個,輸出字典序最小的那個。

input示例

6 5

898196

output示例

4

888188

解題思路:我們可以列舉0-9這些數字,得到每個數字的最小值,最後得到最小值就可以了。

ac**:

#includeusing namespace std;

int main()

if (cif (c==res) ans=min(ans,t);

} cout<}

51Nod1621 花錢買車牌

乙個車牌號由n位數字組成。如果乙個車牌至少有k位數字是相同的,那麼我們就說這個車牌漂亮的車牌。現在華沙想要改變他自己的車牌,使得他的車牌變得漂亮。當然,改車牌是要花錢的。每改變一位數字所要花費的費用等於當前位上的新舊數字之差的絕對值。那麼總費用就是每位上所花費用的總和。舉例如下,舊牌為0123,新牌...

51nod 1621花錢買車牌(貪心)

乙個車牌號由n位數字組成。如果乙個車牌至少有k位數字是相同的,那麼我們就說這個車牌漂亮的車牌。現在華沙想要改變他自己的車牌,使得他的車牌變得漂亮。當然,改車牌是要花錢的。每改變一位數字所要花費的費用等於當前位上的新舊數字之差的絕對值。那麼總費用就是每位上所花費用的總和。舉例如下,舊牌為0123,新牌...

51nod1621 花錢買車牌 排序 貪心

1621 花錢買車牌 codeforces 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 乙個車牌號由 n位數字組成。如果乙個車牌至少有 k位數字是相同的,那麼我們就說這個車牌漂亮的車牌。現在華沙想要改變他自己的車牌,使得他的車牌變得漂亮。當然,改車牌是要花錢的...