日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

斜率优化Convex Hull Trick

發布時間:2023/12/3 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 斜率优化Convex Hull Trick 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

斜率優化

一、簡單DP

首先從一道簡單題引入。

[IOI2002]任務安排

Description

N個任務排成一個序列在一臺機器上等待完成(順序不得改變),這N個任務被分成若干批,每批包含相鄰的若干任務。從時刻0開始,這些任務被分批加工,第i個任務單獨完成所需的時間是Ti。在每批任務開始前,機器需要啟動時間S,而完成這批任務所需的時間是各個任務需要時間的總和(同一批任務將在同一時刻完成)。每個任務的費用是它的完成時刻乘以一個費用系數ci。請確定一個分組方案,使得總費用最小。

例如:S=1;T={1,3,4,2,1};F={3,2,3,3,4}。如果分組方案是{1,2}、{3}、{4,5},則完成時間分別為{5,5,10,14,14},費用C={15,10,30,42,56},總費用就是153。

Input

第一行是N(1<=N<=5000)。

第二行是S(0<=S<=50)。

下面N行每行有一對數,分別為Ti和ci,均為不大于100的正整數,表示第i個任務單獨完成所需的時間是Ti及其費用系數ci。

Output

一個數,最小的總費用。

Sample Input

5

1

1 3

3 2

4 3

2 3

1 4

Sample Output

153

Solution

“光著身子”的動態規劃。

設F[i,j]表示劃分前i個任務為j批的最小費用。

?? ? ? ? ? ? ? ??

,時間復雜度:,空間復雜度:

這顯然是不夠的。

?

實際上我們不一定要知道之前劃分了多少批任務,只需要記錄F[i]表示劃分前i個任務的最小費用。

這樣就寫出了動態規劃方程。

二、簡單題2

將上題的n<=5000改為n<=300000。

Solution

這就是本文的重點所在了。

在上文中的動態規劃中,尚有兩種簡單的優化思路:

  • 優化狀態:將這樣一個動態規劃轉化為貪心或數學題。
  • 優化轉移:優化轉移的時間(主要為優化重復或不必要的轉移)。
  • 顯然,優化狀態很難達成,那么我們考慮優化轉移。

    我們可以發現在轉移的過程中有很多的不必要的轉移:

    考慮一下兩個轉移:

    在此題中,若?

    那么轉移 j 就是不必要的。

    也就是說,若有且選取轉移狀態的集合

    并且存在,后面的轉移比前面的優,則前面的轉移就是無意義的,也就是對最終答案無貢獻的了。

    ?

    考慮本題,如何判斷轉移狀態是否是有用的呢?

    也就是說,如果?

    那么后面的轉移比前面的優,否則前面的轉移比后面的優。

    這樣的,即是用斜率的形式,表現了轉移之間的不必要的關系。

    ?

    進一步,我們發現:

    也就是說,如果當前存在后面的轉移比前面的優,那么這個轉移在之后的狀態中都不會成為最有轉移!

    根據這個性質,我們選擇用單調隊列維護一個兩點間斜率單調遞增的點集隊列。

    設:

  • 若有??,則的轉移必然不會是最優的,于是能夠將它刪除。(維護隊尾)
  • 若有, ? ? ? ?則x1的轉移必然不會是最優的,于是能夠將它刪除。 (維護隊首)
  • 最后的點集隊列滿足:在隊首的點的轉移必然是最優的。

    于是

    將轉移化為,動態規劃完成。

    三、簡單題3

    若 ? -512<=t[i]<=512 ,也就是說:

    ? ??不再成立怎么辦呢?

    我們發現:

  • 若有??,則的轉移必然不會是最優的,于是能夠將它刪除。(維護隊尾)
  • 這一性質依然成立,那么這個點集集合還是會組成一個相鄰點斜率遞增的單調隊列。

    有 ??

    發現:

  • 如果,那么優于。
  • 如果,那么優于。
  • 也就是說,答案一定存在于一個點,使得???且???

    那么必然最優。

    我們可以維護單調隊列,只在隊尾刪除,每次二分查詢一個最優點。

    這樣便是的斜率優化做法。

    ?

    四、簡單題4

    一種形式斜率優化的形式:

    隊列中的點不滿足單調性。

    BZOJ1492: [NOI2007]貨幣兌換Cash

    題目描述:詳見BZOJ。

    這一題就是典型的例子。

    斜率不單調,那么就必須用cdq分治或splay維護斜率凸包解決斜率優化問題了。

    下次有時間再補充。。。

    總結

    以上是生活随笔為你收集整理的斜率优化Convex Hull Trick的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。