肯定先考虑二分答案,判定能不能全部不超过 \(w\)。
钦定不走 \(n\rightarrow1\) 的边,接着翻转若干区间。
翻转一个区间的变化是 \([1,l)++,[l,r)--,[r,n]++\)。
注意到翻转两个不交的区间一定不优,所以所有被翻转的区间交非空。
令交为 \([x,y]\),边初始被覆盖 \(a_i\) 次,翻转后覆盖 \(b_i\) 次,\(b_t\) 为 \([x,y]\) 中 \(b\) 的最大值。
观察到 \(b_t\) 和 \(\max b_i\) 应该是差不多大的,具体来说是:\(b_t\ge\max b_i-1\)。否则可以同时取消翻转一个 \(l=x\) 和 \(r=y\) 的区间,答案不会更劣。
于是有 \(\max a_i=a_t\),因为 \([x,y]\) 中 \(a_t\) 肯定是最大的,而其它地方少翻转若干次,却最多大 \(1\)。
确定了 \(a_t\) 和 \(w\),可以算出被翻转的区间个数 \(a_t-w\) 或 \(a_t-w+1\)。显然钦定了仍满足可二分性。
那么只需要从 \(1\) 到 \(t\) 扫过去,算出每个位置至少被覆盖多少次,然后尽量选 \(r\) 最大的,用大根堆维护即可。
标签:JOISC2017,覆盖,++,max,安排,门票,区间,翻转 From: https://www.cnblogs.com/shrshrshr/p/17145184.html