不太确定是正解的特殊实现还是奇怪做法,翻CF提交记录看到的
常规做法是把ABC先选出来满足 sumC≥ 和的一半,然后通过交换集合内元素调整使得 C 最后满足他条件。
然后我看到的做法是先从小到大排序,令 si 表示 ai 的前缀和,然后从 n 到 1 贪心,每次枚举 ABC ,若当前集合选取 ai 后,剩余的位置全选最小,即 sna−∣A∣,此时若不超过一半,则把 ai 选进当前集合,若某一时刻三个集合都选不了就无解。
显然存在一种合法的选取方案是有解的充要条件。
我的问题是为什么选取 i 的时候任选一个合法集合即可