2020 3 28 C組羊羊列隊 DP

2021-10-05 22:37:26 字數 1294 閱讀 3461

在修建完新路後,小羊們總算可以安心入學了。今年是羊年,新入學的小羊特別多。老師們打算將n只小羊分成m個班級,每個班至少有1隻羊。

如何分班成了老師們最頭疼的事情,因為開學典禮上,村長就要看到小羊們列隊的情況。每個班的小羊都排成一排,站在草場上。村長希望佇列中羊的高度盡可能整齊,村長對佇列的不整齊度有自己的要求。

例如佇列中共有t隻羊,高度依次為a1,a2……,at。那麼不整齊度為:(|a1-a2|+|a2-a3|+……+|at-1-at|)^2。即相鄰兩隻羊高度差之和的平方。

而總體的不整齊度,就是各班不整齊度之和。

現在,請你幫助老師們設計一下,如何分班,如何列隊,才能使m個班級的不整齊度之和最小。

第一行兩個整數n和m,分別表示共有n只小羊,要被分成m個班級。

第二行n個整數,表示每只小羊的高度ai。

輸出最小的不整齊度之和,結果保證不會超過2^31-1。

424

132

2
dp

設f[i][j]為第i個數前,分成j隊的最小不整齊度

前差和,i與j之間的差。

動態能量轉移方程

這樣有80分,剩下要靠斜率優化來完成

#

include

#include

#include

#include

using

namespace std;

int m,n,k,a[

10010

],f[

1001][

1001

],b[

1001][

1001];

intmain()

sort

(a+1

,a+1

+n);

//有序的

for(

int i=

1;i<=n;i++)}

memset

(f,1

,sizeof

(f))

;for

(int i=

0;i<=n;i++

)for

(int i=

2;i<=n;i++

)for

(int j=

2;jcout<[m];

return0;

}

2020 3 28 C組模擬賽題解

t1 羊羊整除 t2 羊羊吃草 t3 羊羊修路 t4 羊羊列隊羊年到了,村長開始教小羊學習pascal語言,剛開始學習四則運算。村長在白板上寫下兩個整數16和3,問小羊們,有16隻羊,平均分到3個羊村,每個羊村分到的數量必須相同,這個分配的數量最大是多少?小羊們很快就得到了答案,每個羊村分到5只,有...

羊車門 C語言版 FDDLC

假設你在進行乙個遊戲節目。現有三扇門供你選擇 一扇門後面是一輛轎車,另兩扇門後面各是一頭山羊。你當然更想得到轎車,但你卻無法看到門後面的真實情況。主持人先讓你做第一次選擇。在你選擇了一扇門後,知道其餘兩扇門後面是什麼的主持人,開啟了另一扇門給你看 那裡有一頭山羊。現在主持人告訴你,你還有一次選擇的機...

C 演算法 狼羊菜過河問題

namespace 狼羊菜過河問題 物件陣列 static string start new string 開始情況 static string end new string 結束情況 static int cnt objects.length 幾種物件 static int count 0 解決方...