/*
陣列沒開夠,爆零兩行淚
longlong開成int,爆零兩行淚
多組忘清空,爆零兩行淚
dp 沒初值,爆零兩行淚
深搜沒邊界,爆零兩行淚
廣搜忘出隊,爆零兩行淚
輸入沒加 &,爆零兩行淚
模數沒看見,爆零兩行淚
-1 不輸出,爆零兩行淚
越界不特判,爆零兩行淚
線段樹開一倍,爆零兩行淚
無向變有向,爆零兩行淚
題意沒審清,爆零兩行淚
檔名起錯,爆零兩行淚
除錯忘刪除,爆零兩行淚
沒用freopen,爆零兩行淚
*/#include
#define maxn 5005
using namespace std;
int f[maxn]
,sumc[maxn]
,sumt[maxn]
;int n,s;
int q[maxn]
;int
main()
memset
(f,0x3f
,sizeof
(f))
; f[0]
=0;for
(int i=
1;i<=n;i++
)for
(int j=
0;j) f[i]
=min
(f[i]
,f[j]
+sumt[i]
*(sumc[i]
-sumc[j]
)+s*
(sumc[n]
-sumc[j]))
; cout<
}/* 考慮dp
* 狀態設計: f[i]
* 集合:將前i個任務處理完的方案數
* 屬性:費用最小值
* 狀態計算: f[i]
* 不同點:最後一組(當前)的劃分情況
* 分類: j∈ 前j乙個任務已經劃分為一組
* 不變的部分:前k組的最小花費(不包括當前組)
* 求變化的部分:sumt[j]*(sumc[i]-sucm[j])+s*(sumc[n]-sumc[j])
* 做當前任務的費用 機器冷卻的費用
* sumt:t的字首和
* sumc:c的字首和
* f[i]=min
* 複雜度o(n^2)
* *
* *
*/
P2608 ZJOI2010 任務安排
陣列沒開夠,爆零兩行淚 longlong開成int,爆零兩行淚 多組忘清空,爆零兩行淚 dp 沒初值,爆零兩行淚 深搜沒邊界,爆零兩行淚 廣搜忘出隊,爆零兩行淚 輸入沒加 爆零兩行淚 模數沒看見,爆零兩行淚 1 不輸出,爆零兩行淚 越界不特判,爆零兩行淚 線段樹開一倍,爆零兩行淚 無向變有向,爆零兩...
P2365 任務安排
n個任務排成乙個序列在一台機器上等待完成 順序不得改變 這 n個任務被分成若干批,每批包含相鄰的若干任務。從零時刻開始,這些任務被分批加工,第 i個任務單獨完成所需的時間為 ti 在每批任務開始前,機器需要啟動時間 s,而完成這批任務所需的時間是各個任務需要時間的總和 同一批任務將在同一時刻完成 每...
P3168 任務查詢系統
利用時間點建樹,因為主席樹建樹時第i結點會繼承第i 1個結點的資訊,可以只修改區間端點使每個時間點對應的樹恰好表示該時間的任務優先順序情況。1.把區間端點全部放入陣列task中排序,起始點時間不變,結束點時間加一。2.按時間從1到n建樹,每次建樹把task中所有時間為i的結點建到樹里,起始點加入樹 ...