SDOI2012 任務安排

2022-02-02 09:05:11 字數 770 閱讀 7223

這題首先要轉化一下這裡對於 \(s\) 的統計

我們先把 \(s\) 做字尾貢獻

然後就有了這個式子:

\[f_i=\min_^ f_j+ (s1_i-s1_j)\times s2_i+s\times(s1_n-s1_j)

\]其中

\[s1_i=\sum_^ c_j\ \ \ \ \ s2_i=\sum_^ t_j

\]然後我們推式子:

最後是個:

\(x且

\[\frac

右側是個單調增的,所以是個下凸殼

然後就沒了

如果我們不保證 \(t_i\) 單調呢?

我們照樣維護乙個下凸殼

然後每次在這裡面找決策點的時候二分一下

具體見**:

#includeusing namespace std;

#define int long long

namespace yspm

const int n=3e5+10;

int t[n],c[n],n,s,f[n],q[n],he,ta;

inline double x(int p)

inline double y(int p)

inline double slope(int x,int y)

inline int work(double val)

printf("%lld\n",f[n]);

return 0; }}

signed main()

SDOI2012 任務安排

機器上有n個需要處理的任務,它們構成了乙個序列。這些任務被標號為1到n,因此序列的排列為1,2,3.n。這n個任務被分成若干批,每批包含相鄰的若干任務。從時刻0開始,這些任務被分批加工,第i個任務單獨完成所需的時間是ti。在每批任務開始前,機器需要啟動時間s,而完成這批任務所需的時間是各個任務需要時...

任務安排 SDOI2012

有乙個數列,每個元素均有乙個完成耗時 t i 與完成耗費 f i 每個元素的耗費等於其完成時刻乘以完成耗費。可以將這些元素分為任意組,每一組的元素完成時刻一樣。每一組都會有乙個固定的額外時間耗費 s 資料範圍 3 10 5 首先推出狀態轉移方程 dp i min dp j s sumf n sumf...

bzoj 2726 SDOI2012 任務安排

機器上有n個需要處理的任務,它們構成了乙個序列。這些任務被標號為1到n,因此序列的排列為1,2,3 n。這n個任務被分成若干批,每批包含相鄰的若干任務。從時刻0開始,這些任務被分批加工,第i個任務單獨完成所需的時間是ti 在每批任務開始前,機器需要啟動時間s,而完成這批任務所需的時間是各個任務需要時...