2022.7.26NOIP测试

T1.树染色问题

思路:

先缩点,在新的树上一层一层染色,为了让层数最少,把直径中点作为根节点。
然后直径长度除以二既可以了。

T2.Multiset

思路:
与整体二分相似,先按位确定答案范围。对每个值的个数枚举并检验。用一个\(set\)存答案的范围,每一个\(node\)\(ll,lr,rl,rr\)四种变量,存储\(l,r\)的范围。

每次确定完数值个数后,在两个集合之间取交集。

T3.最优化问题

将输入的序列按数值大小排序,然后按照数值从小到大加入

维护删 $1..K $个数以后的最大答案 \(c[1..K]\)

当加入一个数 \(ax\) 时,显然它前面必须删 $ax − x $个数

那么如果前面删的数字个数小于等于\(ax − x\) 的都可以转移到$ c[ax − x]$

然后如果前面删的数不超过$ K$ 个而且后面的全部删除可以删满 K 个的话就更新
答案
需要在$ c $数组中修改一个数,查询前缀最小值

posted @ 2022-07-26 16:57  SSZX_loser_lcy  阅读(53)  评论(0编辑  收藏  举报