POJ 1821 单调队列+dp
生活随笔
收集整理的這篇文章主要介紹了
POJ 1821 单调队列+dp
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目大意:有K個工人,有n個墻,現在要給墻涂色。然后每個工人坐在Si上,他能刷的最大范圍是Li,且必須是一個連續子區間,而且必須過Si,他刷完后能獲得Pi錢
思路:定義dp[i][j]表示前i個人,涂色到j的最大的val是多少。
轉移就是dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]) 和dp[i][j] = max(dp[i][j], dp[i - 1][z] + (j - z) * p[i]); 當然z是有條件范圍的,這個請自己找。。。
然后這樣子轉移的話復雜度就是k*n*l,所以復雜度超了,因此我們要用單調隊列維護這個l,讓他變為o(1)。然后我們發現l的轉移條件是可以通過deque來獲得的,所以我們只要維護這個deque就行了
轉載于:https://www.cnblogs.com/heimao5027/p/5866618.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的POJ 1821 单调队列+dp的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringMVC实现简单的图片上传DE
- 下一篇: RedHat 6 安装配置Tomcat