Educational Codeforces Round 173 (Rated for Div. 2)
upd:2024/12/18 更新了 G
A
硬币肯定是能拆则拆。时间复杂度
B
分类讨论
- 对于
,肯定可以整除。 - 对于
,可以整除 要求 的数位之和为 的倍数。也就是 。发现当 的时候, 已经是 的倍数肯定满足条件。如果 ,直接计算是否是 的倍数即可。 - 对于
,要求 。 - 对于
,发现 是 的倍数,也就是说一旦 为 的倍数也就是 ,那么肯定满足条件。如果 ,直接计算是否是 的倍数即可。 - 对于
,做法类似于 。
时间复杂度 。
C
假设全部的数字都满足
求出最大,最小子段和(可以为空),设他们的值分别为
-
取最大子段和的全部前缀(可空),至少可以取遍
之间的任何数。 -
取最小子段和的全部前缀(可空),至少可以取遍
之间的任何数。
现在加入
剩下的就是那些
将满足条件的数排序并去重即可。时间复杂度
D
求出一个极大的区间
直接猜
(bro把
E
这个题目很好!
首先二进制问题是可以拆位的,问题转化为了01矩阵问题。我们可以进行的操作有:行涂
假设不考虑
-
,那么第 行涂 应该在第 列涂 之前操作。 -
,那么第 行涂 应该在第 列涂 之后操作。
如果将上述关系连边,最终是一个 DAG 就有解。这真的对吗?
我们发现错误原因在于认为每一行,每一列都操作,但是这是不对的。我们引入一个超级源点,连向哪些必要操作的点(
-
,则必须进行列涂 ,源点向其连边。 -
,则必须进行行涂 ,源点向其连边。
仅考虑超级源点可以到达的点构成的导出子图,如果是一个 DAG 就有解。现在很对。
对于每一个二进制位都判断以下,时间复杂度
F
动态dp题,出的很烂。问题取反面:选取不为空的,尽量小的集合使得异或和为
考虑问题放到线段树上,每一个节点维护
则直接使用线段树来做,预处理
考虑猫树分治,预处理是
G
这个题目的做法很有参考价值!
我们考虑分块去做。将答案拆分为块内的答案和块外的答案。只要维护了
对于块内的问题,我们考虑直接维护数组
假设添加元素
现在分析一下时间复杂度,预处理为
但是很遗憾,这是无法通过的。
我们想一下哪里不优的?明明两种询问的操作次数可以被视为相同,但是在点修时,维护
考虑将
至此,点修的时间复杂度被优化到
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】