专栏文章
Day1
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mir0cxuh
- 此快照首次捕获于
- 2025/12/04 13:41 3 个月前
- 此快照最后确认于
- 2025/12/04 13:41 3 个月前
T1 dict
不是这什么b玩意我一遍还写不对的,考虑将每个串排成合法的最小字典序即可。
T2 tree
感觉好好构造不如随机化。记使根的度数不为 ,记叶子个数为 ,首先观察到答案下界为 ,考虑对着下界构造。
考虑对于一个节点,它子树内还未匹配的叶子至少有一个会被上传到父节点,并记录来源;否则考虑消除还未匹配的叶子,注意不能消除同一来源的叶子,否则不合法。
最后还不能匹配的直接到根即可,可以发现这样的点不超过 个。
T3 match
arc087f。
首先转化题意为:找到一个排列 ,使 最大。
考虑答案的上界,对于每条边左右两侧的两个连通块,记其大小分别为 ,那么这条边最多产生的贡献为 ,即子树内点都向外连。
考虑让重心作为根,定义一个点合法当且仅当 不在根下同一子树内。问题转换为有多少个排列 ,能使所有点都合法。对于这个问题,我们套路的考虑容斥,令 表示子树内至少有 个点不合法的方案数,那么对于一个大小为 的子树有 ,背包合并得到整个树的 ,最后容斥计算答案即可。
T4 game
首先根据后手的策略扫描线,按照 从大到小排序。直接考虑贡献太麻烦,先假设所有牌都贡献了 ,那么一张牌被取就会产生 的贡献。
考虑记一张牌被取了为 ,否则为 ,那么一个合法状态应为:对于所有前缀,有前缀和 。
基础的贪心策略是,去找当前 最大的位置,如果加上这个位置后所有前缀都合法,那就加入,可以发现这样一定不劣。
每次都暴力去扫太劣,考虑每一轮修改后会产生哪些影响:首先删去这个元素,如果它本身不计入答案则无影响,否则考虑将它从答案中剔除,找到剩余未选项中 最大的位置,将它计入答案。
然后考虑加入新的元素,考虑先将它加入答案,然后找到第一个不合法的前缀,找到其中 最小的位置将其删去,可以证明这样操作后所有前缀都合法且一定不劣。
以上过程均可以使用线段树上二分维护,时间复杂度 。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...