Codeforces Round 969 (Div. 1) 记录
Codeforces Round 969 (Div. 1) 记录
场切了 ABC,2:23 过的 C pretest,DEF 都没开到(
A
简单博弈题。
对于除了首尾以外的
如果开头是
因此得到,一个叶子会提供
那可以做简单分讨。设叶子节点上的问号数量是
如果根节点上不是问号,那么 Alice 能得到的答案增量是
如果跟节点上的值是问号,当叶子节点上的
否则,谁拿到根谁吃亏,可以通过判断
B
答案单调下降,因此考虑离线后时光倒流计算增量。
首先考虑在什么情况下取到一条路径上的最大答案。
时光倒流后,相当于一开始给定一棵树,我们称每次操作是选定一条边制约解除。
那么设当前所有被制约解除的边的边权和为
考虑题目中路径的性质。树是按 dfs 序编号的,那么每条边会被两条
那么问题就变得很简单了。首先算出所有边权都确定时的答案,并记一个
对于每次操作,设当前的边的权值为
因为每次只会修改两条路径,所以可以直接修改 bool 数组并维护
C
喜欢我猜结论题吗?
首先每次拿到一个数组,显然将它一直操作直至无法操作为止后如果连续就不合法。
考虑无法操作的集合是什么样子的。假设集合内有两个数的差为偶数那么一定操作。而无法操作即无论选择哪两个数操作,其能产生出的数都已经在集合中了。
然后手玩下发现,不能操作当且仅当这段数组从小到大排序后,差分数组的
胡个证明。首先如果排序后两个相邻数作差后是偶数,那么显然将它一直操作下去。最后可以得到一个任意相邻数的差都为奇数的数组。
那么假设场上出现的间隔的种类数超过
问题变成了,问有多少个子段排序后的差分的
然后胡个结论,排序后的差分的
证明它。根据
那就直接把差分处理出来得到一个长度为
D
赛后补题,启动!
大家好啊今天给大家带来点根分。
考虑最优顺序。显然先放
证明考虑各种邻项交换证最优性。
考虑当前数组合法的条件。设当前数组中满足值在
考虑合法条件。对于
然后还有种情况。如果长度为奇数,那么中间那一项是不用考虑的。
那么合法需要满足的就是
而考虑下修改是什么。显然最大值改成
那找一下差多少就行了吧。
然后出题人很良心的卡了二维前缀和的空间,考虑卡空间。
操作离线下来,每次对于每个
实现上,枚举
本文作者:AzusidNya の 部屋
本文链接:https://www.cnblogs.com/AzusidNya/p/18391542
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步