卧薪尝胆,厚积薄发。
ZJOI2006 皇帝的烦恼
Date: Thu Sep 13 11:05:39 CST 2018 In Category: NoCategory

Description:

$n$ 个人成一个环形,第 $i$ 个人要求有 $a[i]$ 个勋章,每个人不能和与他相邻的人有相同的勋章,问最少需要多少勋章。
$1\le n \le 20000$

Solution:

先二分一个值,然后问题就变成了能否用 $x$ 种勋章满足所有人的要求,可以记一个 $mn[i]$ 表示第 $i$ 个人最少有 $mn[i]$ 个和第一个人相同的, $mx[i]$ 是最多,转移为 $mx[i]=\min(a[i],a[1]-mn[i-1])$ , $mn[i]=\max(0,a[i]-((x-a[1])-(a[i-1]-mx[i-1])))$ ,意义是用个数减去最多有多少个和 $1$ 不一样,总共可能有 $x-a[1]$ 个,上一轮用了 $a[i-1]-mx[i-1]$ 个,最后再和 $0$ 取 $\max$ ,那么如果 $mn[n]=0$ 就说明合法。
Copyright © 2020 wjh15101051
ღゝ◡╹)ノ♡