01 分數規劃
阿新 • • 發佈:2018-08-04
問題 bsp 先來 .... per sigma sea 方案 參數
推薦博客 : http://www.cnblogs.com/perseawe/archive/2012/05/03/01fsgh.html
學習這東西源於牛客多校大佬們的一道簽到題....
先來看一個問題
01分數規劃問題:所謂的01分數規劃問題就是指這樣的一類問題,給定兩個數組,a[i]表示選取i的收益,b[i]表示選取i的代價。如果選取i,定義x[i]=1否則x[i]=0。每一個物品只有選或者不選兩種方案,求一個選擇方案使得R=sigma(a[i]*x[i])/sigma(b[i]*x[i])取得最值,即所有選擇物品的總收益/總代價的值最大或是最小。
問題分析 :
數學分析中一個很重要的方法就是分析目標式,這樣我們來看目標式。
R=sigma(a[i]*x[i])/sigma(b[i]*x[i])
我們來分析一下他有什麽性質可以給我們使用。
我們先定義一個函數F(L):=sigma(a[i]*x[i])-L*sigma(b[i]*x[i]),顯然這只是對目標式的一個簡單的變形。分離參數,得到F(L):=sigma((a[i]-L*b[i])*x[i])。這時我們就會發現,如果L已知的話,a[i]-L*b[i]就是已知的,當然x[i]是未知的。記d[i]=a[i]-L*b[i],那麽F(L):=sigma(d[i]*x[i]),多麽簡潔的式子。我們就對這些東西下手了。
顯然對於上面的式子,當 L 取最大值時, F(L) = 0 , 而當 L 的取值大於最大值時,此時F(L)的值是 < 0 的, 當L取小時, F(L) > 0 ,那麽我們這裏根據這個性質就可以去二分 L 了
然後再去選擇物品,能少選就少選 !
01 分數規劃