cf710 E. Generate a String
题意:
添一个球花费 x,删一个球花费 x,把球的数量翻倍花费 y。问恰得到 n 个球的最小花费
思路:
开动小脑筋处理后效性
(偶数情形)
\(f(2i)\) 可能被 \(f(2i-A)+Ax\) 或 \(f(i+B)+y+2Bx\) 更新
根据dp的定义,\(A=1\)
若被后者更新则 \(f(i+B)+y+2Bx\le f(i)+y\implies f(i+B)+2Bx\le f(i)\)
而根据dp的定义有 \(f(i)\le f(i+B)+Bx\),那么 \(2Bx\le Bx\implies B\equiv 0\)
所以 \(f(2i)\) 只可能被 \(f(2i-1)+x\) 或 \(f(i)+y\) 更新
(奇数情形)
\(f(2i-1)\) 可能被 \(f(2i-2)+x\) 或 \(f(i+B)+y+(2B+1)x\) 更新
若被后者更新则 \(f(i+B)+y+(2B+1)x\le f(i)+y+x\implies f(i+B)+2Bx\le f(i)\)
同理,\(B\equiv 0\)
所以 \(f(2i-1)\) 只可能被 \(f(2i-2)+x\) 或 \(f(i)+y+x\) 更新
综上,\(f(i)=\min \{ f(i-1)+x,f(\lfloor \frac{i+1}2 \rfloor)+y+(i\%2)x \}\)

浙公网安备 33010602011771号