bzoj1017[JSOI2008]魔獸地圖DotR

來源:互聯網
上載者:User

標籤:分割   limit   最大的   res   合成   地方   表示   div   數組   

先佔一個坑。

題解寫好了,代碼不想寫。。

bzoj 1017 dp推導,沒有代碼。(我才不會告訴你是我代碼不會寫呢)首先我們可以發現這是一道樹形dp但是不同於平常的樹形dp 這是由兒子節點合并到父節點。設f[i][j][k]表示以i為根的子樹貢獻j個到他的父親節點,花費k所能獲得的最大的power我們可以分成兩種狀態。i是葉子節點:f[i][j][k*cost[i]]=(k-j)*power([i]);k*cost[i]表示的是在這個點選k個,這個點獲得的power不包括給予他父親的就是後半部分。i不是葉子節點:這個轉移就比較的奇怪了。我們需要設一個中間的數組g[i][j]表示以x為根的子樹中前i個節點花費j所能獲得的最大power於是g[cnt][j]=max{g[cnt-1][k]+f[x‘son][l*res][j-k]};這個地方非常不好理解。··········分割線(解釋)··············cnt是枚舉的變數,表示的是我們已經枚舉到第幾個點了。首先我們從大到小枚舉l,表示x這個點買l個,g[cnt-1][k]表示的是前面的狀態f[x‘son][l*res][j-k]中res表示的是這個點的可以購買的剩餘的數量,[j-k]就是兩個的差分值啦··········end···············我們根據這個g就可以進一步推導ff[x][j][k]=max{g[size[x]][k]+(l-j)*power[x]};註:花費價格是一樣的,合成不需要花費。於是最後對每一個根節點跑一邊ans數組就可以了,方法和上面一樣。ans[cnt][j]=max{ans[cnt-1][k]+f[x][tmp(0<=tmp<=limit[x])][j-k]};

 

bzoj1017[JSOI2008]魔獸地圖DotR

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.