最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

[Codeforces is All You Need] ER 145 D (1809D) - Solution

2023-03-24 12:01 作者:故寓諸無(wú)竟  | 我要投稿

題目簡(jiǎn)述

????????給定長(zhǎng)度為n0%2F1串,每次操作可以刪除任意元素(代價(jià)為w_d%20%3D%2010%5E%7B12%7D%2B1)或交換相鄰元素的位置(代價(jià)為w_s%20%3D%2010%5E%7B12%7D)。求將該串變?yōu)榉沁f減串的最少的代價(jià)(空串也是非遞減的)。

????????原題目鏈接:https://codeforces.com/contest/1809/problem/D

思路

????????每次操作代價(jià)的數(shù)值是最扎眼的。%5Cmin%5C%7Bw_s%2Cw_d%5C%7D足夠大并且%7Cw_d-w_s%7C足夠小的奇怪?jǐn)?shù)值,保證了:無(wú)論進(jìn)行的操作種類(lèi)如何,總操作次數(shù)越少越好。這是因?yàn)橹炼?img type="latex" class="latex" src="http://api.bilibili.com/x/web-frontend/mathjax/tex?formula=n-1" alt="n-1">次刪除就一定能把串變成非遞減的,而此時(shí)(n-1)%7Cw_d-w_s%7C%20%5Cll%20%5Cmin%5C%7Bw_s%2Cw_d%5C%7D(差異湊不夠一次操作),因此操作次數(shù)在優(yōu)化中占據(jù)了絕對(duì)的主導(dǎo)地位。

????????另一個(gè)簡(jiǎn)單的事實(shí)是,非遞增串的前綴必然也是非遞增的。如此優(yōu)良的性質(zhì),不令f(i)表示s_%7B1...i%7D變?yōu)橐圆灰?/strong>0結(jié)尾的非遞增序列所需的最小代價(jià),是很不劃算的。(以0結(jié)尾則是平凡的,答案是cnt_1(i)%20%5Ccdot%20w_d,其中cnt_1(i)表示s_%7B1...i%7D1的數(shù)目。)

????????首先f(0)%20%3D%200是平凡的邊界。

????????對(duì)于s_i%20%3D%201的情形,轉(zhuǎn)移是非常容易的。我們可以不刪除s_i,于是:

f(i)%20%3D%20%5Cmin%5C%7Bf(i-1)%2C%20cnt_1(i-1)%5Ccdot%20w_d%20%5C%7D

????????其中后一項(xiàng)是將s_%7B1...i-1%7D全變?yōu)?img type="latex" class="latex" src="http://api.bilibili.com/x/web-frontend/mathjax/tex?formula=0" alt="0">的代價(jià)。另外,此時(shí)我們沒(méi)有任何必要?jiǎng)h除s_i。

????????對(duì)于s_i%20%3D%200的情形,我們必須要把它除掉。如果直接刪除,有:

f(i-1)%20%2B%20w_d%20%5Cto%20f(i)

????????如果使用交換,事情稍微復(fù)雜起來(lái)了,我們需要考慮一下交換操作在什么時(shí)候才是有意義的。假設(shè)cnt_1(i-1)%20%5Cge%202,且所有s_j%20%3D%201的下標(biāo)序列依次序?yàn)?img type="latex" class="latex" src="http://api.bilibili.com/x/web-frontend/mathjax/tex?formula=%5C%7Bi_1%2C...%2Ci_K%5C%7D" alt="%5C%7Bi_1%2C...%2Ci_K%5C%7D">。如果對(duì)s_i%20%3D%200交換后進(jìn)行了刪除,那么需要的操作次數(shù)%5Cge%202,且與直接刪除完全等價(jià),因此這種行為是無(wú)意義的。這意味著如果要對(duì)s_i%20%3D%200進(jìn)行交換,必須貫徹到底,只對(duì)其使用交換。在這種前提下,為使序列非遞減,假設(shè)需要?jiǎng)h除%5C%7Bi_1%2C...%2Ci_M%5C%7DM%3CK),那么僅僅由于s_i%20%3D%200帶來(lái)的操作次數(shù)為:

M%20%2B%20(i-i_%7BM%2B1%7D)%20%5Cge%20K

????????如果M%2B(i-i_%7BM%2B1%7D%20)%20%3E%20K,那么顯然不如直接將K個(gè)1全部刪除。

????????如果M%2B(i-i_%7BM%2B1%7D)%20%3D%20K,這意味著:

i_%7BM%2B1%7D%20%3D%20i_%7BM%2B2%7D-1%20%3D%20...%20%3D%20i_%7BK%7D-(K-M-1)%20%3D%20i-(K-M-2)

????????用人話(huà)說(shuō)就是i_%7BM%2B1%7D%2C...%2Ci_K%2Ci形成了s的一個(gè)子串。這種情況下,直接刪除s_i%3D0以及%5C%7Bi_1%2C...%2Ci_M%5C%7D的操作次數(shù)是1,并且已經(jīng)合法。如果交換仍然具有意義,那么要求:

M%2B1%20%5Cge%20M%2B(i-i_%7BM%2B1%7D)

????????亦即i_%7BM%2B1%7D%20%5Cge%20i-1。換言之,只有在s_%7Bi-1%7D%20%3D%201時(shí),對(duì)s_is_%7Bi-1%7D進(jìn)行的交換是可能存在意義的。因此,僅在這一極強(qiáng)的限制滿(mǎn)足時(shí),我們才進(jìn)行轉(zhuǎn)移:

w_s%20%2B%20%5Bcnt_1(i-1)-1%5D%20%5Ccdot%20w_d%20%5Cto%20f(i)

????????綜上,最終的轉(zhuǎn)移方程為:

f(i)%20%3D%20%5Cbegin%7Bcases%7D%0A0%20%26%2C%20i%3D0%20%5C%5C%0A%5Cmin%20%5C%7Bf(i-1)%2Ccnt_1(i)%5Ccdot%20w_d%5C%7D%20%26%2C%20i%5Cge%201%20%5Cwedge%20s_i%20%3D%201%20%5C%5C%0A%5Cmin%20%5C%7Bf(i-1)%2Bw_d%2C%20w_s%20%2B%20%5Bcnt_1(i-1)-1%5D%5Ccdot%20w_d%5C%7D%20%26%2C%20i%5Cge%202%20%5Cwedge%20s_i%20%3D%200%20%5Cwedge%20s_%7Bi-1%7D%3D1%20%5C%5C%0Af(i-1)%2Bw_d%20%26%2C%20else%0A%5Cend%7Bcases%7D

????????最后的答案為%5Cmin%20%5C%7Bf(n)%2C%20cnt_1(n)%20%5Ccdot%20w_d%5C%7D,總的時(shí)間復(fù)雜度為%5CTheta(n)。

后記

????????代碼很簡(jiǎn)單。如果想看可以去https://github.com/cnzzx/AlgorithmCompetitions

[Codeforces is All You Need] ER 145 D (1809D) - Solution的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
津南区| 商都县| 始兴县| 临沭县| 长宁区| 手游| 永丰县| 霍城县| 盘山县| 扬州市| 白朗县| 台东市| 迁安市| 富平县| 崇信县| 如东县| 黄平县| 贡嘎县| 定南县| 文山县| 鹤山市| 岳阳县| 娱乐| 增城市| 金堂县| 德州市| 沙雅县| 会泽县| 萍乡市| 灯塔市| 内丘县| 孝义市| 宁明县| 兴国县| 英山县| 青冈县| 丹阳市| 建昌县| 高平市| 区。| 楚雄市|