ZJOI2006 皇帝的煩惱

2022-05-19 10:42:56 字數 689 閱讀 4102

題目:codevs1513、bzoj1863。

題目大意:有n個人圍成乙個圈,每個人需要$a[i]$個顏色不同的勳章,且相鄰兩個人不能拿到同樣顏色的勳章。求至少需要準備多少種不同顏色的勳章。

解題思路:首先我們可以二分答案,但如何判斷答案的正確性呢?我們可以用dp。

設$f[i]$表示第i個人在不與前乙個人衝突的情況下,與第1個人最多衝突的個數,$g[i]$表示第i個人在不與前乙個人衝突的情況下,與第乙個人最少衝突的個數,可得

$f[i]=min(a[i],a[1]-g[i-1])$

$g[i]=max(0,a[i]+a[i-1]+a[1]-f[i-1]-x)(x為當前二分到的答案)$

最後如果g[n]不為0則答案有效。

c++ code:

#include#includeusing namespace std;

int n,a[20005],f[20005],g[20005];

bool ok(int x)

return !g[n];

}int main()else

l=mid+1;

} printf("%d\n",ans);

return 0;

}

ZJOI2006 皇帝的煩惱

嘟嘟嘟 首先瞎想可以知道,一定選相鄰兩個數之和最大的。這樣後面的將軍選和前面的前面的一樣的勳章就行了。不過如果 n 是奇數的話就會gg。然後考慮每乙個勳章最多有 frac 個人用,所以 lceil frac rceil 個勳章一定夠。然後兩者取max。只考慮第一種情況能對一半點 滑稽 include...

ZJOI2006 皇帝的煩惱 二分 DP

傳送門 初看題目,感覺就是道水題,判一下奇偶性就行 考完了才知道,浙江的題嘿嘿 結果最後模擬賽只拿了20。題解 二分答案,check的時候dp,設ma x i m ax i 為第i個人最多和第1個人勳章相同的個數,mi n i m in i 為第i個人最少和第1個人勳章相同的個數 於是就有 判一下m...

ZJOI2006 物流運輸

description 物流公司要把一批貨物從碼頭a運到碼頭b。由於貨物量比較大,需要n天才能運完。貨物運輸過程中一般要轉停好幾個碼頭。物流公司通常會設計一條固定的運輸路線,以便對整個運輸過程實施嚴格的管理和跟蹤。由於各種因素的存在,有的時候某個碼頭會無法裝卸貨物。這時候就必須修改運輸路線,讓貨物能...