有 n 個任務排成乙個序列在一台機器上等待執行,它們的順序不得改變。
機器會把這 n 個任務分成若干批,每一批包含連續的若干個任務。
從時刻0開始,任務被分批加工,執行第 i 個任務所需的時間是 titi。
另外,在每批任務開始前,機器需要 s 的啟動時間,故執行一批任務所需的時間是啟動時間 s 加上每個任務所需時間之和。
乙個任務執行後,將在機器中稍作等待,直至該批任務全部執行完畢。
也就是說,同一批任務將在同一時刻完成。
每個任務的費用是它的完成時刻乘以乙個費用係數 cici。
請為機器規劃乙個分組方案,使得總費用最小。
輸入格式
第一行包含整數 n。
第二行包含整數 s。
接下來n行每行有一對整數,分別為 titi 和 cici,表示第 i 個任務單獨完成所需的時間 titi 及其費用係數 cici。
輸出格式
輸出乙個整數,表示最小總費用。
資料範圍
1≤n≤50001≤n≤5000,
0≤s≤500≤s≤50,
1≤ti,ci≤1001≤ti,ci≤100
輸入樣例:51
1 33 2
4 32 3
1 4輸出樣例:
153
#include
#include
#include
#include
using
namespace std;
const
int n =
50010
;int n, s;
int st[n]
, sc[n]
;int f[n]
;int
main()
memset
(f,0x3f
,sizeof f)
; f[0]
=0;for
(int i =
1; i <= n; i ++
)for
(int j =
0; j < i; j ++
) f[i]
=min
(f[i]
, f[j]
+(sc[i]
- sc[j]
)* st[i]
+ s *
(sc[n]
- sc[j]))
; cout << f[n]
<< endl;
return0;
}
C 題解 任務安排1
有 n nn 個任務排成乙個序列在一台機器上等待執行,它們的順序不得改變。機器會把這n nn 個任務分成若干批,每一批包含連續的若干個任務。從時刻0 00開始,任務被分批加工,執行第 i ii 個任務所需的時間是 t it i ti 另外,在每批任務開始前,機器需要 s 的啟動時間,故執行一批任務所...
1606 例 1 任務安排 1
1606 例 1 任務安排 1 時間限制 1000 ms 記憶體限制 524288 kb 提交數 203 通過數 149 題目描述 有 n 個任務排成乙個序列在一台機器上等待執行,它們的順序不得改變。機器會把這 n 個任務分成若干批,每一批包含連續的若干個任務。從時刻 0 開始,任務被分批加工,執行...
任務安排 jobs
題目 任務安排 jobs.c cpp pas in out 時限 每個測試點2 秒 問題描述 小y 最近遇到了乙個棘手的問題。她有兩項任務需要完成,其中第一項任務是重複操作1 op1 s1 次,第二項任務是重複操作2 op2 s2 次。為了完成這些任務,小 y 僱傭了n 名工人。其中,第i 個工人完...