最近,機房出了乙個不團結分子:dr.weissman。他經常欺騙同學們吃一種「教授糖豆」,使同學們神志不清,毆打他人,砸爛計算機,破壞機房團結。幸運地,乙個和諧家認清了dr.weissman的本質。機房人民團結在一起,共同對抗dr.weissman及「教授糖豆」。
同學們十分具有社會責任感:他們害怕「教授糖豆」流向社會,導致動亂。於是,剛才提到的和諧家身先士卒,為了實驗,品嚐「教授糖豆」。
每個「教授糖豆」的性質都有所不同。同志們已經研究出每個糖豆對人的影響。具體地,每個糖豆都有乙個破壞值,吃掉這顆糖豆後,身先士卒的和諧家會對機房造成一定的破壞,破壞程度為先前累積的破壞值加上本次食用糖豆的破壞值,而且這顆「教授糖豆」的破壞值會加入累積。為了減小實驗造成的破壞,同學們準備了幾顆「**糖豆「,功能是無條件將累積的「破壞值」清零。
由於實驗要求,和諧家只能按照給定的順序吃掉「教授糖豆」,但可以隨時吃掉一顆或多顆「**糖豆」。
你能幫助和諧家同志盡量減小實驗所造成的破壞嗎?
輸入格式
第一行,兩個數,用空格,分隔開,乙個n,乙個m。(n,m均為正整數。)n表示「教授糖豆」的數目,m表示「**糖豆」的數目。
剩餘n行,每行1個正整數,表示「教授糖豆」的破壞值。和諧家必須按照給定的順序,一次乙個,吃掉所有「教授糖豆」。
輸出格式
一行,乙個數,表示實驗造成的最小破壞。
樣例樣例輸入
3 1
1 2 3
樣例輸出
7
資料範圍與提示
對於100%的資料,1<=n<=100,m<=n 所有破壞值的加和小於10^9。
f[i,j]表示吃第i個破壞豆後吃第j個**豆。
先破壞再吃豆,從i開始往前搜第乙個吃**豆的地方,然後更新
1var2 f,sum:array[0..202,0..202]of
int64;
3n,m,tot:int64;
4i,j,k:longint;
5 a:array[0..1005]of
int64;
6function
min(x,y:int64):int64;
7begin
8if x>y then exit(y) else
exit(x);
9end;10
begin
11 //assign(input,'
j.in
');reset(input);
12 //assign(output,'
j.out
');rewrite(output);
13readln(n,m);
14for i:=1
to n do
read(a[i]);
1516
for i:=1
to n do
17for j:=i to n do
18begin
19 tot:=0;20
for k:=i to j do
21begin
22 tot:=a[k]+tot;
23 sum[i,j]:=sum[i,j]+tot;
24end;25
end;
26for i:=1
to n do//初始化
27 f[i,0]:=sum[1
,i];
2829
for i:=1
to n do//剛開始我寫的是2,導致f[1,1]的狀態為0,wa
30for j:=1
to m do
31begin
32 f[i,j]:=999999999999999999;33
for k:=1
to i do //列舉**豆
34begin
35 f[i,j]:=min(f[i,j],f[k,j-1]+sum[k+1
,i]);
36end;37
end;
38writeln(f[n,m]);
39close(output);
40end.
最大團,極大團
團 對於給定圖g v,e 其中,v 是圖g的頂點集,e是圖g的邊集。圖g的團就是乙個兩兩之間有邊的頂點集合。簡單地說,團是g的乙個完全子圖。如果乙個團不被其他任一團所包含,即它不是其他任一團的真子集,則稱該團為圖g的極大團 maximal clique 頂點最多的極大團,稱之為圖g的最大團 maxi...
組隊(最大團)
問題描述 小秋秋想出去玩了。小秋秋有許多朋友,有一些小秋秋的朋友相互之間也是朋友。小秋秋覺得自己帶不是朋友的兩個朋友出去玩會出現尷尬。好糾結 小秋秋想知道自己最多可以帶多少朋友出去玩以及帶人最多的方案數。輸入檔案 input.txt 第一行兩個數,n,m分別表示小秋秋的朋友數,以及他們之間相互認識的...
最大團問題
include cstdio include queue include cstring define max 20 using namespace std int n 城市數量 int x max 解向量 struct node priority queuepq void enqueue int ...