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

CF2229E Deconstruction Tree。

找最后集合(序列)的充要条件。

思路
C++
我们给最后 S 一写限制 
- S 单调递增 
- s[i-1] 不在 s[i] 的子树中 
- 最后一个元素是全局最大的(第一个也是确定的) 

这个应该是充分必要条件。 
反正这种题就是找充要条件 

可以以 n 为根节点 


CF2229F Load Unbalancing

CF2229F Load Unbalancing。

C++
f[s] 表示用了 s,最小的值最大为多少 
好像没法转移 

性质:最后一次是往最小值里面放了最大的数,然后成为了全局最大值 
二分那个最小值,需要保证所有的数都大于等于它 

我认为这道题可以自定义顺序,一定有合法的排列方法 
可以到了当前组合,就把当前组合的下一个元素放进去 
这种二分中是正确的 

f[s] 表示用 s,能组成最多达标的组数 
g[s] 表示组数最大,当前组的最大值