分治 (2019 河北省賽) (區間dp)

2021-09-23 23:45:58 字數 993 閱讀 3613

你是deep國的大軍師,輔佐乙個非常有野心的國王,這位國王非常有野心,他計畫攻占 n 個國家。在地圖上,這些國家排成一行。

探子已經查明,當攻打乙個國家 i 時,為了防止國家間的聯合對抗,需要給該國家周圍,所有未被攻占的國家支付costicosti 個金幣,即對於國家 i,它左側第乙個已被攻打的國家為 l,右側第乙個已被攻打的國家為 r,則他需要給[l+1,i-1] 和 [i+1,r-1] 之間的國家支付金幣。如果 l 不存在,則需要給 [1, i-1] 之間的所有國家支付金幣;若 r 不存在,則需要給 [i+1,n] 之間的所有國家支付金幣。

現在,你的下屬已經給你提供了每個國家需要支付金幣的數量。為了滿足國王的野心,你需要計算出攻占完所有國家需要的最小花費。

第一行是乙個整數 t,代表接下來有t組資料。

接下來每組資料

第一行有乙個整數 n,代表要攻占的國家數目。

第二行共 n 個整數,代表攻占每個國家前,需要支付給其周圍未被攻占國家 costicosti個金幣。

1≤t≤501≤t≤50,1≤n≤1001≤n≤100,1≤costi≤100001≤costi≤10000

對於每組資料輸出一行,代表需要支付的最小花費。
示例1

複製

211

31 1 2

複製

0

2

3

1 1 2

先打中間這個1 給左右兩個各1塊錢

再打左右兩個 不用花錢

典型的區間dp

對於每個區間列舉最先選的那個點

#includeusing namespace std;

int c[100005];

int dp[105][105];

int main()

}for(int i=1;i<=n;i++)

//for(int len=0;len}

}printf("%d\n",dp[1][n]);

}}

2019ccpc河北省賽總結

給定m,n,請你計算 1,n 範圍內有多少數字能被m整除。由於答案很大,請輸出答案對10e9 7取模的結果。測試樣例 輸入 2 9310 9輸出 120960 403200這道題一開始一開始交了一發沒有過,tle,果斷放棄,熱身賽結束之後問了一下大佬,大佬說這題是乙個簽到題。找大佬仔細問了問,大致思...

2019河北省大學生程式設計競賽

theme 給定q,n,p,1 n,q,p 10 9,求s i 1,n q i mod p solution 求q i很簡單,用快速冪就行,關鍵是n到10 9,切丁超時。開始是想求出等比數列的和,但要除以q 1,而q 1與p又不一定互質,所以也沒法用乘法逆元。可以看出完全沒必要乙個乙個地用快速冪算,...

記河北省首屆網路技能大賽

早上6點起來,立刻得到張老師的 說情況再次變動,上午9點開始比賽 這次大賽一直變動很多,而且到比賽前日程也沒確定。但火車票是買了,7點44的動車2等。這意味著8點50出石家莊火車站,然後10分鐘到鐵道學院 當然這是不可能的 7點2校的同學準時來到一校帶我上了計程車開往火車站。到了火車站很快集合然後進...