2024.1 杂题
To be a rock and not to roll.
这篇文章,以及以后可能的一些文章,会把同一个来源的题丢一块。
- 牛客挑战赛 72 C. Crying 与哈密顿路
- D. Crying 与 404
- E. Crying 与初中数学
- 牛客挑战赛 71 D. 权值和 plus
- E. 寻找中位数 plus
- QOJ4824 Bracket-and-bar Sequences
- QOJ4826 Find the Parts
- QOJ2566 Inversions
- 「JOISC 2020 Day4」Capital City
- LOJ6485 LJJ 学二项式定理
- LOJ6499 颜色
- LOJ6077 逆序对
- 洛谷 P5591 小猪佩奇学数学
- CF1558F Strange Sort
- CF1556G Gates to Another World
- CF1093G Multidimensional Queries
- CF207C Game with Two Trees
- CF600F Edge Coloring of Bipartite Graph
- ARC161E Not Dyed by Majority (Cubic Graph)
- ARC160F Count Sorted Arrays
- ARC151E Keep Being Substring
- AGC027E ABBreviate
- 「BJOI2016」水晶
- 「SDOI2017」序列计数
牛客挑战赛 72 C. Crying 与哈密顿路
Tag:D-树形 DP;D-背包。
令
即
总复杂度
D. Crying 与 404
Tag:S-主席树。
因为是排列,所以
使用主席树求第
E. Crying 与初中数学
Tag:M-整除分块;M-莫比乌斯反演;M-杜教筛;M-线性筛。
尝试枚举
可以结合
首先对于所有的
有经典结论:
可导出:
对外层按
需要设置合理的预处理范围,出题人题解说复杂度是
感觉这类的数论题大部分都需要整预处理来平衡复杂度,很厉害。
牛客挑战赛 71 D. 权值和 plus
Tag:M-原根;M-模意义下对数;M-多项式快速幂。
首先对
第
E. 寻找中位数 plus
Tag:S-线段树。
令
但是目前还是不好找区间,但是有结论:如果存在合法区间,则一定存在一个区间,满足他的左端点或右端点为
于是使用线段树维护第一个
QOJ4824 Bracket-and-bar Sequences
Tag:D-计数 DP。
写个暴力会发现合法的括号序列个数比
然后写暴力试填即可,Code。
QOJ4826 Find the Parts
Tag:H-构造;H-哈希;cin 的使用方法。
发现我们可以用的 bit 数量大约是矩阵的
发现存下来第
复杂度没算,但是好像有点慢,不管了能过,Code。
QOJ2566 Inversions
Tag:M-生成函数;M-多项式 exp;M-多项式 ln;H-分段打表;M-自然数幂和。
令
证明:对于任意生成函数
得证,则需求:
令
使用斯特林数求出自然数幂和,分块打表求
「JOISC 2020 Day4」Capital City
Tag:H-贪心;T-点分治。
有贪心:任取某个点为根,现在试图将这个根到与其同颜色的点打通,则枚举每一个同颜色的点向上跳父亲直到跳到同颜色即可,注意可能中途会加入其它节点。
有性质:如果在某一方案中染色到了
使用点分治来加速贪心的过程,每次贪心的时候发现贪心的部分越出了子树就跳出不做,即可做到
LOJ6485 LJJ 学二项式定理
Tag:M-单位根反演。
单位根反演即:
可以导出
对于原题,施单位根反演得:
在
LOJ6499 颜色
Tag:S-分块;S-ST 表;S-四毛子。
听说这个东西就叫四毛子?
注意到问题很强,考虑分块乱搞,令块长为
LOJ6077 逆序对
Tag:M-生成函数;D-背包 DP。
对于长度为
接下来只需要求出
令
- 令当前背包内的所有值
, ; - 令当前背包内的所有值
,并塞个 进来: ; - 除去加入
的情况: 。
转移后卷积即可,时间复杂度
洛谷 P5591 小猪佩奇学数学
Tag:M-单位根反演。
可以将
先只看左侧,可以将
可以
目前已经导出了一个
下面写一下推导:令
注意到此时
做到
CF1558F Strange Sort
Tag:S-线段树。
感觉同上啊,先转成
令
- 移动的过程中,前一个
挡住了当前的 ,轮数就会是 ; - 全程没人挡着,那就是前面的
的个数加上当前位置的奇偶性。
目标为 ,将式子拆开则有 ,其中 是第 个 前面的 的数量, 是第 个 的位置,枚举 使用线段树维护即可,可以看成维护左边 加上右边 再加上奇偶性, ,Code。
CF1556G Gates to Another World
Tag:S-线段树;S-并查集。
操作以区间的形式表示,于是尝试建立动态开点线段树(很困难),发现题目的建边可以看成:对于每个点向左右两侧递归,并将对应的点连边。
时间倒流将删边变成加边,于是对于每个节点维护其对应被加入的时间,对于一个区间内相同加边删边的点,使用这个点对其整体维护,于是复杂度就对了。
CF1093G Multidimensional Queries
Tag:S-线段树。
trick 罢了。
令
分开维护
CF207C Game with Two Trees
Tag:R-Trie;S-树状数组;S-树链剖分;H-倍增;R-字符串哈希
仅讲述 C3 做法。
令
转成
对于每一个
考虑回过头来处理操作,考虑如下的维护方法:
- 加入
的节点时,查询当前节点的权值 ,并给当前节点子树内的所有点权值 加 。 - 加入
的节点时,对其对应的节点 ,查询权值 ,并给对应节点子树内的所有点权值 加 。
容易拍平到 DFS 序上使用两个树状数组维护,现在只需要求出对应的节点
枚举
不要拘泥于在线维护这样的事情,要考虑整体的处理以及问题的转化。
CF600F Edge Coloring of Bipartite Graph
Tag:G-二分图边染色。
答案为最大点度,构造方法是每次枚举一条边,然后求两边点集的最小可能颜色,如果颜色不相同就交叉染色即可。
时间复杂度
ARC161E Not Dyed by Majority (Cubic Graph)
Tag:H-随机化;G-2-SAT。
啊?
结论:答案占比比较大。
随机答案,现在问题转化为写 checker,发现这东西就是一个 2-SAT,限制形如 B
则 W
,这样的,直接建图即可。
Code。
ARC160F Count Sorted Arrays
Tag:D-计数 DP。
其实还算套路?使用不知道从哪里听来的套路:枚举
对所有的
然而注意到其实有很多次操作都是无效操作,毛估估一下会发现有效操作的量级是
ARC151E Keep Being Substring
Tag:G-最短路;S-最长公共子串。
Type 1:存在公共子串
此时将
Type 2:不存在公共子串
发现此时只可能先将
建立图论模型,建立超级源点
; ; 。
设得到的最短路长度为 ,则答案为 ,跑 BFS 即可,复杂度 。
综上,可以在
AGC027E ABBreviate
Tag:D-计数 DP。
令 a
为 b
为
考虑得到的字符串
考虑分段 DP,尝试划分每一段的最终答案,转移一定是从上一个前缀和不为
「BJOI2016」水晶
Tag:G-网络流。
以
套路的,建立最小割模型,对于
「SDOI2017」序列计数
Tag:D-计数 DP;M-矩阵快速幂。
没有第二条限制只需要令
有的话只需要容斥掉只选合数的情况,这可以再跑一遍矩阵快速幂,没了,Code。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧