ZJOI2006 皇帝的煩惱 二分 DP

2021-08-25 19:39:07 字數 883 閱讀 5161

傳送門

初看題目,感覺就是道水題,判一下奇偶性就行

考完了才知道,浙江的題嘿嘿

結果最後模擬賽只拿了20。。。

題解:

二分答案,check的時候dp,設ma

x[i]

m ax

[i

]為第i個人最多和第1個人勳章相同的個數,mi

n[i]

m in

[i

]為第i個人最少和第1個人勳章相同的個數

於是就有

判一下min

[n] min

[n

]是否為0,就結束了…

洛谷的題解貌似有o(

n)o (n

)的做法,不過我沒看懂

#include

#include

#include

using

namespace

std;

const

int maxn = 30001;

int a[maxn], n;

int max[maxn], min[maxn];

inline

int read()

while(ch >= '0' && ch <= '9')

return k * f;

}bool check(int t)

return min[n] == 0;

}int main()

a[n + 1] = a[1];

while(l <= r)

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

printf("%d", l);

return

0;}

ZJOI2006 皇帝的煩惱

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

ZJOI2006 皇帝的煩惱

題目 codevs1513 bzoj1863。題目大意 有n個人圍成乙個圈,每個人需要 a i 個顏色不同的勳章,且相鄰兩個人不能拿到同樣顏色的勳章。求至少需要準備多少種不同顏色的勳章。解題思路 首先我們可以二分答案,但如何判斷答案的正確性呢?我們可以用dp。設 f i 表示第i個人在不與前乙個人衝...

ZJOI 2006 三色二叉樹

顯然是樹形dp,可以在狀態轉移的過程中順便把樹給建出來,定義 f i j f i j 為當節點 i i 被染成顏色 j role presentation style position relative j j時,以 i i 為根的子樹中最多有多少個節點被染成綠色,g i j role presen...