20260904
CF2229D Me When Median Problem
CF2229D Me When Median Problem。
二分简化问题到 01。
思路
C++
能不能二分,需要保证这个数一定会留到最后
感觉不太像?
也就是每一次都需要保证留下 >=mid 的?
这样显然是有问题的
其实不一定有问题,但是我不会证明
好吧,应该能证明一点
但是最后是 min(a,b)
我只能保证有一个数 >=mid
我忽略了一个很重要的因素,二分之后只有 0 1
最后需要 (0,1) (1,1)
(0,1) 可以 (0,0) (1,1) (0,1) (0,1)
(1,1) 可以 (0,1) (1,1) (1,1) (1,1)
那就所有 (0,1) 先匹配,然后 (0,0) (1,1)
CF2229E Deconstruction Tree
找最后集合(序列)的充要条件。
思路
C++
我们给最后 S 一写限制
- S 单调递增
- s[i-1] 不在 s[i] 的子树中
- 最后一个元素是全局最大的(第一个也是确定的)
这个应该是充分必要条件。
反正这种题就是找充要条件
可以以 n 为根节点
CF2229F Load Unbalancing
C++
f[s] 表示用了 s,最小的值最大为多少
好像没法转移
性质:最后一次是往最小值里面放了最大的数,然后成为了全局最大值
二分那个最小值,需要保证所有的数都大于等于它
我认为这道题可以自定义顺序,一定有合法的排列方法
可以到了当前组合,就把当前组合的下一个元素放进去
这种二分中是正确的
f[s] 表示用 s,能组成最多达标的组数
g[s] 表示组数最大,当前组的最大值