Codeforces Round #384 (Div. 2) ABCD題解

一位著名的CF玩家曾經(jīng)說過,不要用Java做CF。
不然就是這樣:用ArrayList的代碼,用Vector的代碼

快速版題解:
A、B、C水題,D樹形dp。手速場無誤。

A
題意:就是有n個(gè)城市,你要從a點(diǎn)到b點(diǎn)。然后0表示沒有機(jī)場,1表示有機(jī)場。問你要轉(zhuǎn)多少飛機(jī)。
思路:神特么水題。。。
代碼:384A

B
題意:樣例很清楚了
思路:因?yàn)槭菍ΨQ的,如果在右邊就對稱回來,再求解子問題
代碼:384B

C
題意:題意很清楚給你一個(gè)n,要你把2/n拆成1/x+1/y+1/z,如果拆不了輸出-1。
思路:1/n=1/(n+1)+1/(n*(n+1))
代碼:384C

D
題意:給你一個(gè)有根樹,讓你選兩個(gè)節(jié)點(diǎn),要求這兩個(gè)節(jié)點(diǎn)下面的子樹不相交。問,最大權(quán)值。
思路:

  • 樹形dp。dp[x][0]表示整個(gè)以x為根的子樹的全部和;dp[x][1]表示以x為根的子樹按題目要求再選一次,能拿到的結(jié)果;dp[x][2]表示從x為根的子樹里面任選一個(gè)節(jié)點(diǎn)時(shí)能拿到的最大值。
  • 所以dp[x][0]=sum(dp[next][0]);
    dp[x][2]=max(dp[x][0], dp[nexti][0]);
    dp[x][1]=max(dp[nextk][1], max(dp[nexti][2]+dp[nextj][2]))

代碼:384D

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容