Codeforces Round #814 (Div. 1)
A Burenka and Traditions
首先可以发现可以只执行区间长度为 1 或者区间长度为 2 的操作。如果全部用长度为 1 的操作,需要操作 n 次,而对一个异或和为 0 的区间,可以
每次操作相邻的两个数,这样会少 1 次操作次数。于是只需要去找异或和为 0 的区间,用 set 记录前缀异或和并支持查询即可。
B Fibonacci Strings
首先根据所有数的总和确定需要分前多少个 fib 数,然后贪心,从大到小依次考虑每个 fib 数,每次取出剩下的数中的最大值,如果是上次操作的
则取次大值,如果这个数小于需要操作的 fib 数则无解,否则将它减去当前的 fib 数再放回去。
这是因为如果剩下的某个数大于现在需要分的 fib 数,那么要把它分解成若干不相邻的 fib 项之和,这个分解方法里面是一定包含当前的这个 fib 数的,所以这一步一定要分出去,否则后面就分不完了。
C Tonya and Burenka-179
如果对 的每一个约数 都维护所有大小为 的环的数字总和的话,时间复杂度是 ,过不去。想一下可以发现如果
两个约数 满足 是 的约数,那么只用维护大小为 的环的信息即可,时间复杂度 。
D Permutation for Burenka
首先根据序列 建出笛卡尔树,就等价于在树上填数,使得 大于 子树中的其他任意一个点的 。
在填数时,只需要考虑初始已经存在的数对当前位置的大小限制,因为后面填的数可以通过交换来满足彼此之间的大小关系,于是可以对每个需要填的位置处理出 表示这个位置能填的数的区间。
那么问题转化为给出 个区间,需要验证 中的 个数以及 能否与这些区间形成一个合法的匹配。先不考虑 ,尝试匹配 中的 个数。将这些数从小到大排序,将 个区间按照左端点排序,依次考虑每个数,并且将所有左端点 当前数的区间加到一个 multiset 中,每次在 multiset 中查询出右端点 当前数的最小右端点的区间,将其与当前的数匹配。
记第 个点匹配到的区间为 ,最后会剩下一个区间没有匹配到,记作 。记 表示去掉第 个区间后,剩下的 个区间是否能与 中的 个数形成合法匹配。初始有 ,再从 开始,从大到小枚举 ,记 表示如果去掉 ,第 个点会匹配到的区间,这个可以在计算 时一并求出。那么如果 存在,就有 ,否则 。最后所有 值为 的区间形成的并就是合法的 的所有取值。由于第 个点既能匹配 ,又能匹配 ,所以这两个区间一定是相交的,那么最后所有 值为 的区间并起来一定还是一个区间,记录这个区间的左右端点即可。没有注意到这个性质的话,也可以直接通过打差分标记求出这些区间的并。时间复杂度 。
E Impressionism
将所有行看成 个点,将所有列看称 个点,对于每个 ,将行 与列 之间连一条边,颜色为 ,那么问题就转化为了判断两张二分图是否同构。
由于两条颜色相同的边不会有公共点,所以对于一个连通块,只需要完成了一个点的配对,就可以沿着边将所有点的配对情况都依次确定。最后根据配对的情况分别对行与列构造一个交换顺序即可。
F Burenka, an Array and Queries
先莫比乌斯反演一下,可知要求的是 。这个值只和区间 中所有数含有的质因子有关,可以通过莫队求出每次询问时区间内含有的所有质因子。
现在考虑已知了区间内含有的所有质因子,如何求出答案。注意计算时只会用到没有重复质因子并且 的 ,而 ,于是可以将 内的所有质数分为 的小质数(共 个),与 的大质数(共 个),那么有用的 所包含的质因子一定是由所有小质数的一个子集与不超过 个大质数组成的。于是还要找出乘积不超过 的大质数对(共 个)。
预处理出 表示选取的小质数为 的各个子集的答案之和, 表示选取的小质数为 的各个子集,选取的大质数为 的答案之和, 表示选取的小质数为 的各个子集,选取的大质数为 与 的答案之和,回答询问时枚举选取的大质数或大质数对即可求出答案。时间复杂度为 ,其中 为合法的大质数与大质数对的数目之和,在本题的数据范围下为 。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库