Codeforces Global Round 14 E. Phoenix and Computers 思维 + dp
傳送門
文章目錄
- 題意:
- 思路:
題意:
有nnn臺(tái)電腦,你可以手動(dòng)打開某個(gè)電腦,如果第i?1,i+1i-1,i+1i?1,i+1臺(tái)電腦都打開了,那么第iii臺(tái)電腦會(huì)自動(dòng)打開。不能手動(dòng)打開自動(dòng)打開的電腦,問有多少種打開的方式使得所有電腦都開機(jī)。
思路:
首先考慮全都手動(dòng)打開nnn臺(tái)電腦有多少種方案。
從111開始,那么111右邊的所有電腦都必須依次打開,方案數(shù)是C(n?1,0)C(n-1,0)C(n?1,0)。
從222開始,那么222右邊的所有電腦都必須依次打開,左邊的電腦可以在保證順序的情況下任意時(shí)刻打開,方案數(shù)C(n?1,1)C(n-1,1)C(n?1,1)。
以此類推,總方案是C(n?1,0)+C(n?1,1)+...+C(n?1,n?1)=2n?1C(n-1,0)+C(n-1,1)+...+C(n-1,n-1)=2^{n-1}C(n?1,0)+C(n?1,1)+...+C(n?1,n?1)=2n?1。
再考慮電腦最終一定是一段手動(dòng)開的,一個(gè)自動(dòng),一段手動(dòng),一段自動(dòng)…一段手動(dòng)。
那么定義f[i][j]f[i][j]f[i][j]表示第iii臺(tái)電腦是手動(dòng)開的,第i+1i+1i+1臺(tái)電腦是自動(dòng)開的,手動(dòng)打開了jjj臺(tái)電腦。
我們可以枚舉多打開的電腦個(gè)數(shù)kkk來轉(zhuǎn)移,即f[i][j]?>f[i+1+k][j+k]f[i][j]->f[i+1+k][j+k]f[i][j]?>f[i+1+k][j+k],含義是pos?>ipos->ipos?>i手動(dòng)打開,i+1i+1i+1自動(dòng)打開,i+2?>i+1+ki+2->i+1+ki+2?>i+1+k手動(dòng)打開。
由于多開了kkk臺(tái)電腦,那么按照上面結(jié)論,它有2k?12^{k-1}2k?1個(gè)打開的方法。
由于前面已經(jīng)打開了jjj個(gè)了,我們可以從j+kj+kj+k個(gè)位置選kkk個(gè)位置來打開kkk個(gè)電腦,所以乘一個(gè)C(k+j,k)C(k+j,k)C(k+j,k)即可。
轉(zhuǎn)移方程為:f[i+k+1][j+k]+=f[i][j]?2k?1?C(j+k,k)f[i+k+1][j+k]+=f[i][j]*2^{k-1}*C(j+k,k)f[i+k+1][j+k]+=f[i][j]?2k?1?C(j+k,k)
總結(jié)
以上是生活随笔為你收集整理的Codeforces Global Round 14 E. Phoenix and Computers 思维 + dp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Codeforces Round #70
- 下一篇: 10岁儿童减肥的最好方法是什么