1. 程式人生 > >CPOJ 2018.10.19提高測試 垃圾機器人 (litter)

CPOJ 2018.10.19提高測試 垃圾機器人 (litter)

在這裡插入圖片描述 考慮對每一條路徑差分,以此計算每個點ii在每輪中第kk個撿的貢獻: costi,k=(1+4)ai          (k=1)costi,k=((k+1)2k2)ai=(2k+1)ai          (k>1) cost_{i,k}=(1+4)a_i\;\;\;\;\;(k=1)\\ cost_{i,k}=((k+1)^2-k^2)a_i=(2k+1)a_i\;\;\;\;\;(k>1)

所以一個點在這一輪中越早撿貢獻越少 所以列舉撿了tt輪,最遠的nt+1nn-t+1\sim n個垃圾在這輪中第一個撿,以此類推 一開始想當然地用了dp,把一個區間裡的垃圾放在同一裡撿,而貪心是把一個區間裡的垃圾放在每一輪的同一Code