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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[bzoj 2726] 任务安排 (斜率优化 线性dp)

發布時間:2023/11/30 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [bzoj 2726] 任务安排 (斜率优化 线性dp) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

3月14日第三題!!!(雖然是15號發的qwq)
Description
機器上有N個需要處理的任務,它們構成了一個序列。這些任務被標號為1到N,因此序列的排列為1,2,3…N。這N個任務被分成若干批,每批包含相鄰的若干任務。從時刻0開始,這些任務被分批加工,第i個任務單獨完成所需的時間是Ti。在每批任務開始前,機器需要啟動時間S,而完成這批任務所需的時間是各個任務需要時間的總和。注意,同一批任務將在同一時刻完成。每個任務的費用是它的完成時刻乘以一個費用系數Fi。請確定一個分組方案,使得總費用最小。
Input
第一行兩個整數,N,S。
接下來N行每行兩個整數,Ti,Fi。
Output
一個整數,為所求的答案。
Sample Input
5 1
1 3
3 2
4 3
2 3
1 4
Sample Output
153
HINT
Source

補:范圍:
1<=N<=3*10^5,0<=s,ci<=512,-512<=ti<=512.

數據較小版本(n^2即可)請點這:http://blog.csdn.net/ye_xingyu/article/details/79562237
斜率優化,斜率為(s+sumT[i]),當截距最小時的f[i]就是當前最優決策
注意:ti有負數,則sumT[i]不具有單調性要把隊列中全部存著(隊尾仍可去掉無用決策即不滿足下凸性)用二分每次找到左側斜率小于當前斜率右側大于的位置,直接用方程轉移(即不用min)

code:

//By Menteur_Hxy #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std;const int MAX=300010; const int INF=0x3f3f3f3f; int n,s,l,r; long long ti[MAX],fi[MAX],f[MAX],q[MAX]; //注意開long long 前綴和還是很大的,我因為這個wa兩次QAQint search(int k) {if(l==r) return q[l];int L=l,R=r;while(L<R) {int mid=(L+R)>>1;if(f[q[mid+1]]-f[q[mid]]<=k*(fi[q[mid+1]]-fi[q[mid]])) L=mid+1;else R=mid;}return q[L]; }int main() {scanf("%d %d",&n,&s);for(int i=1;i<=n;i++) {scanf("%lld %lld",&ti[i],&fi[i]);ti[i]+=ti[i-1];fi[i]+=fi[i-1];}r=l=1;for(int i=1;i<=n;i++) {int p=search(s+ti[i]);f[i]=f[p]-(s+ti[i])*fi[p]+ti[i]*fi[i]+s*fi[n];while(l<r && (f[q[r]]-f[q[r-1]])*(fi[i]-fi[q[r]])>=(f[i]-f[q[r]])*(fi[q[r]]-fi[q[r-1]])) r--;q[++r]=i;}printf("%lld",f[n]);return 0; }

通過這個題重新復(zi)習(xue)了下斜率優化感覺斜率優化就是來一個維護比值單調的隊列(這個值就對應線性規劃的坐標系中的斜率)從中選出最優決策。(不過感覺弄方程變形又弄變量有點麻煩233~)
期待之后有關斜率優化的繼續學習與練習( ̄▽ ̄)/。

轉載于:https://www.cnblogs.com/Menteur-Hxy/p/9248003.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的[bzoj 2726] 任务安排 (斜率优化 线性dp)的全部內容,希望文章能夠幫你解決所遇到的問題。

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