CF1913

C

先用桶记录各个位数量。

对于每次询问,从低位到高位扫,先用掉一个当前位的,然后把当前位的全部转化成 \(cnt/2\) 个更高位的。

D

有一个思路:其实删区间可以视作删相邻两个数。(然鹅这题不是按这个思路做的)

考虑整个序列最小值,它一定不会被删。

这个最小值把序列剖成两半。递归进入左右分别计算方案数。

有个问题:递归进入后,更短的序列的最小值也可能被边界外的更小值删掉。

但是我们发现,新的最小值要被删,一定是连着某半边全部删了。

E

和士兵占领类似。按行列建图。

每一行建一个点,每一列建一个点,行列之间连边容量 \([0,1]\),费用为:若对应格子原本是 \(1\),费用为 \(0\);否则费用为 \(1\)

\(S\) 向行连容量 \([a_i,a_i]\) 费用 \(0\) 的边,列向 \(T\) 连容量 \([b_i,b_i]\) 费用 \(0\) 的边。

跑有源汇上下界最小费用最大流。

这里回顾一下:上下界网络流是出的多了 \(x\),就向新超汇点连容量为 \(x\) 的边!所有额外边费用都是 \(0\),不要忘了原本的 \(T\)\(S\)\(+\infty\) 边!

posted @ 2024-02-05 14:13  FLY_lai  阅读(1)  评论(0编辑  收藏  举报