Extreme Extension 思维,dp
生活随笔
收集整理的這篇文章主要介紹了
Extreme Extension 思维,dp
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題意:
- 給一數(shù)組a,可對(duì)其中aia_iai?進(jìn)行如下操作:將aia_iai?拆成兩數(shù)之和,然后代替aia_iai?加入數(shù)組中。設(shè)一個(gè)數(shù)組的 extremeextremeextreme valuevaluevalue 指的是:使得數(shù)組單調(diào)不下降的最小操作次數(shù)。據(jù)此,求a數(shù)組的所有子數(shù)組的 extremeextremeextreme valuevaluevalue 之和
思路:
- 先考慮一個(gè)數(shù)組,顯然,將末尾元素拆分是沒有意義的,且會(huì)使答案增大。而對(duì)于中間元素,例如 ...[17],5,10,23,...... [17], 5, 10, 23, ......[17],5,10,23,... ,如果它違反了單調(diào)不下降的規(guī)則,就必須進(jìn)行拆分,可以有多種拆法,但使得其中最小元素盡可能大,是最優(yōu)的拆法。例如,拆成(4,4,4,5)(4, 4, 4, 5)(4,4,4,5)比(3,3,3,3,5)(3, 3, 3, 3, 5)(3,3,3,3,5)更好,因?yàn)檫@可能減少前面需要的操作數(shù)量,因此,相當(dāng)于讓拆分成的元素盡可能接近,且數(shù)量盡可能少,又要讓其中最大的小于ai+1a_{i+1}ai+1?,那么,對(duì)于當(dāng)前的數(shù)aia_iai?和下一個(gè)數(shù)ai+1<aia_{i+1}<a_iai+1?<ai?,我們應(yīng)當(dāng)拆分,例如這里17應(yīng)當(dāng)分為?17/5?=4\lceil 17/5 \rceil = 4?17/5?=4個(gè)數(shù),所以最小數(shù)是?17/4?=4\lfloor 17/4 \rfloor = 4?17/4?=4。顯然,如果aia_iai?比ai+1a_{i+1}ai+1?小,則認(rèn)為我們將它“拆分成一個(gè)數(shù)”
- 這樣掃一遍下來,以O(n)O(n)O(n)解決了求解單個(gè)數(shù)組的問題,但是,子數(shù)組的數(shù)量是n2n^2n2數(shù)量級(jí),不能全部這樣求解
- 考慮dpi,xdp_{i,x}dpi,x?是第iii個(gè)數(shù)被拆分成最小元素為xxx的若干個(gè)數(shù),并且以xxx開頭的非遞減數(shù)列的數(shù)量。有dpi?1,ydp_{i-1,y}dpi?1,y? += dpi,xdp_{i,x}dpi,x?,因此可以轉(zhuǎn)化。
- 一個(gè)數(shù)nnn拆分為最小元素xxx ∈\in∈ {nnn,?n/2?\lfloor {n/2} \rfloor?n/2?,?n/3?\lfloor {n/3} \rfloor?n/3?,…,111},這個(gè)集合中元素個(gè)數(shù)不是n個(gè),而是O(n1/2)O(n^{1/2})O(n1/2)數(shù)量級(jí)的,這一點(diǎn)在整除分塊的技巧中也有使用。
- 最終我們根據(jù)dpdpdp數(shù)組統(tǒng)計(jì)答案。對(duì)于dpi+1,xdp{i+1,x}dpi+1,x,它對(duì)答案的貢獻(xiàn)是i?dpi+1,x?(?ai/ai+1??1)i * dp_{i+1,x} * (\lceil a_i / a_{i+1} \rceil - 1)i?dpi+1,x??(?ai?/ai+1???1),這是因?yàn)橛?span id="ozvdkddzhkzd" class="katex--inline">i?dpi+1,xi * dp_{i+1,x}i?dpi+1,x?個(gè)數(shù)列,每個(gè)數(shù)列對(duì)aia_iai?執(zhí)行這樣的拆分
總結(jié)
以上是生活随笔為你收集整理的Extreme Extension 思维,dp的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Moderate Modular Mod
- 下一篇: Odd Grasshopper 奇偶找规