ARC 板刷记录
暂时停更。
记录难度
大部分都是口胡,因为我迫真有时间写。
难度来源:https://kenkoooo.com/atcoder/#/table/
个人认为有启发意义的题目会打上“深刻”标签,很难以理解的题目会打上“被爆”标签。
免责声明:写博客的人是蒟蒻,经常不会做,因此下面给出的讲解可能与网上某些题解有相似或一致之处。
如果侵犯了原作者的利益,请联系我,我会立刻删除此部分内容。
ARC162
C-Mex Game on Tree
有一棵
首先 B 可以直接通过在某个位置放置
[被爆]D-Smallest
Vertices
给出
现在你要对于所有满足度数限制的树求出所有好点的编号和。对
E-Strange Constraints
你有一个长为
在 中的出现次数不超过 。 在 中的出现次数不超过 。
这个题目描述比较的抽象,我们换一个描述。
设
- 在
处可以填一个 使得 。
容易发现
设
当从
F-Montage
给定
考虑转化题目限制。我们发现对于任意矩形等价于如果左上角与右下角为
此外我们还发现如果一整行/列都是
因此我们发现删除整行/列的
定义
这个东西前缀和优化一下就好了。时间复杂度
ARC161
这场创意很好。
被 F 创似了跳了。
C-Dyed by Majority (Odd Tree)
你有一棵树保证度数均为奇数,要求给每个结点都染色为黑/白,然后每个结点同时变换为与之相连的所有点颜色的众数,使得每个点最终变为指定的颜色。给出一组解或报告无解。
考虑初始时每个叶结点直接染色成其父亲的颜色就好了(不影响其他结点),而它们的父亲的颜色已经确定。
然后每次把这些点删掉后肯定还是一棵树,用广搜重复这个过程即可。
D-Everywhere is Sparser than Whole (Construction)
题意:你要构造一个
首先
[深刻]E-Not Dyed by Majority (Cubic Graph)
你有一个
打表可得随机一组解有不大于
考虑如何判断不合法,一个点连出去的边中最多只能有一个和它本身的颜色不同,于是就可以用
2-SAT,对于每对
ARC160
A-Reverse and Count
题意:有一个长为
Sol:只要我们能找到 std::nth_element
)。
我们设要比较
- 若
,则答案为 。 - 否则若
,则答案为 。 - 否则答案为
。
时间复杂度
B-Triple Pair
题意:求正整数三元组
Sol:根分。
当
当
时间复杂度
[深刻]C-Power Up
题意:你有一个多重集,每次操作可以取出两个
答案对
Sol:不妨设我们总是从最小的数开始合并,这样可以确保统计不会重复。
DP,定义
状态数是
修改状态为:
然后做一个差分前缀和就好了。
状态数是
[深刻]D-Mahjong
题意:对长为
对
Sol:逆向做成单点加
每个元素必定是被单点加了若干次并/或被区间加了若干次。由于区间加
我们设
。 。 。
考虑对条件三容斥,每次钦定有至少
暴力计算组合数即可,时间复杂度
ARC159
B-GCD Subtraction
题意:给定整数
Sol:根据 GCD 辗转相加相减的性质,
考虑每次计算减多少次 GCD 后 GCD 会变大。
设
设要求的答案为
枚举
时间复杂度
C-Permutation Addition
题意:你有一个长为
Sol:首先考虑是否有解。
设原数列和为
接下来考虑如何构造。
我们发现先加上
这样最多会做大约
D-LIS 2
题意:最开始有一个空的序列,进行
Sol:无聊套路,定义
然后非常套路的两棵线段树分别维护
ARC158
B-Sum-Product Ratio
题意:在给定的集合里选三个数
Sol:我们设已经确定了
[深刻]C-All Pair Digit Sums
题意:定义
现在给出
Sol:我们观察到每发生一次进位会导致
我们从低到高按十进制位考虑。在只考虑第
因此对于每一位,按照
时间复杂度
[深刻]D-Equation
题意:给出下列三元方程的任意一组解:
Sol:
我们随机
[被爆]E-All Pair Shortest Paths
题意:给你一个
对
Sol:究极麻烦题。只看懂分治做法,扫描线做法太神秘了看不懂。
考虑分治,设分治区间为
由于点权为正,容易证明最短路一定不会走回头路(否则可以直接抄近道),因此可以线性递推出任意一个点到区间中点的最短路。
我们设点
那么
我们考虑当
移项,得到
考虑把所有
- 当前值来自右区间时,我们在
中插入 。 - 当前值来自左区间时,对答案的贡献为
。
因此只需要记录
时间复杂度
ARC157
B 是简单分讨题,跳了。
C-YY Square
题意:一个
将路径上经过的所有数字排成长为
求所有可能路径的权值的平方和。
Sol:套路 DP 题。
先考虑如果只求线性和怎么做,显然 DP:定义
定义
D-YY Garden
题意:一个
求所有切割方案中满足每个连通块和为
Sol:
如果整个矩阵和不为偶数则无解;否则一定是形成了
在钦定了横向连通块
从上往下扫,记录上一次切的地方,因此这一次切的地方必定满足和上一刀围成的矩形内和为
注意可能有全
预处理二维前缀和即可,时间复杂度
E-XXYX Binary Tree
题意:给一棵有根真二叉树,你需要给每个结点的值
出现了 次。 出现了 次。 出现了 次。 没有出现过。
你只需要判断解的存在性。保证
多组数据,
Sol:由于真二叉树的性质,所有非叶结点中
我们分讨根的值。
- 根值为
时,那么恰好有 个 ,其中有 在叶子结点上。 - 根值为
时,那么恰好有 个 ,其中 个在叶子结点上。
容易发现只要满足上述条件就一定能构造出符合条件的树。
我们做一个树形背包:
时间复杂度
ARC156
B-Mex on Blackboard
题意:你有一个大小为
答案对
Sol:如果我们希望插入
考虑枚举最后集合的最大值为
时间复杂度关于值域线性。
C-Tree and LCS
题意:有一棵
- 在树上选取任意一条简单路径
,令 , 和 的 LCS 的最大长度。
Sol:
我们可以用下面这个方式构造出一个答案不大于
- 首先把所有叶结点压到一个队列里。
- 随意取出两个叶结点
,然后使 ,然后删掉这两个结点。 - 重复直到原树被删完。如果还剩一个结点
,使 。
现在我们证明这个答案不大于
- 当
,答案为 。 - 否则我们随便选择被同时删掉的两个点
,则一定不存在一条同时包含 且答案大于 的路径。转移到 。
证毕。
[深刻][被爆]D-Xor Sum 5
题意:给一个长为
Sol:当一个
对于一个
拆一下组合数:
由 Lucas 定理:
由于在模
考虑 DP。
定义
时间复杂度
ARC155
C 是大分讨跳了。
A-ST and TS Palindrome
题意:给定字符串
小力分讨一下。
Case 1:
由题意可得
Case 2:
同理此时
时间复杂度
B-Abs Abs Function
题意:维护一个二元组
小力分讨一下,得到
用 std::set
维护 set::lower_bound
查询即可。
时间复杂度线性对数。
D-Avoid Coprime Game
题意:有一个
对于多重集内的每个数判断当这个数作为第一次被选择的数时两人都采取最优策略的情况下谁会获胜。本题中
首先考虑
设
现在我们不强制要求 出一张
+2 选择一个
设
因此加一维表示当前操作次数的奇偶性。当后继状态均为先手必胜时,
时间复杂度
ARC154
C-Roller
题意:你有一个环状数组
把元素相等的子串压成一个块,操作等价于把一个块长度减
D-A + B > C ?
题意:交互题,猜一个长为
由于
由于
ARC153
B 是平衡树板子跳了。
[深刻]C-± Increasing Sequence
给定
首先令
令
时间复杂度线性。
D-Sum of Sum of Digits
定义
给定数组
定义
每一位转移之前把数组按照
如果使用基数排序,时间复杂度
ARC152
B 是无聊结论跳了。
C-Pivot
有一个数组
我们考虑排序后把数组画到直线上,操作相当于选取一个点翻折,于是无论怎么操作直线的形状都不会变(只会斜率变负),也就意味着
我们考察两个端点的变化,设选择的是
D-Halftree
题意:你有一个
首先
考虑从每个点
[被爆]E-Xor
Annihilation
在数轴上有
求有多少
ARC151
C 是神秘博弈论跳了。
B-A<AP
给定长为
字典序更小可以描述为
这样就可以得到若干个相等关系,枚举
[深刻]D-Binary Representations and Queries
你有一个长为
求操作完成后的数列。对
考虑两个操作
考虑到对于一个固定的
其中
因此每次我们只需要计算出所有乘起来的矩阵的结果即可。
设
[深刻]E-Keep Being Substring
你有一个长为
当
当
因此我们考虑建图,
时间复杂度
ARC150
B-Make Divisible
对于
考虑枚举
对
时间复杂度
[深刻]C-Path and Subsequence
你有一张
考虑如何匹配最短子序列。发现对于一个点我们总是选择入边中的最短匹配长度,因此跑 Dijkstra 即可。
时间复杂度
D-Removing Gacha
一棵树最开始都是白点,每次随机选择一个到根路径上有白点的点涂黑,求把整棵树涂黑的期望次数。
单独考虑每个结点的期望染色步数,答案为每个点期望之和。
设结点
ARC149
被 E 撅了跳了。
C-Avoid Prime Sum
构造一个
显然的方式是把奇数和偶数各放一边,只需要考虑
[深刻]D-Simultaneous Sugoroku
数轴上有
考虑移动原点。对于一次操作,在
容易想到只需要把被原点截断的两部分中较短的一部分的每个结点都对称到另一部分,用树维护对称关系,最后 DFS 一遍即可。
或者我在这里放一张官方的图会好一些?
ARC148
C-Lights Out on Tree
你有一棵树,
首先考虑暴力,设结点
然后发现当某个结点的颜色与父亲结点不同时,必定需要加一次操作次数(一次操作必定无法解决)。所以答案就是这个。
D-mod M Game
有
大胆猜想当且仅当所有数出现次数都是偶数时
[深刻]E-≥ K
给你一个长为
发现条件转化为:
- 不能出现两个相邻
的数。 - 若
相邻, ,则 。
直接排列是比较难的,考虑按照
实时维护一下还有多少个位置可以放
:选 个位置放即可,方案数为 ,然后 。 :相当于把这 个数划分成 段(允许为空)然后把每一段都填到原先的一个空位,于是方案数 ,然后 。
时间复杂度
ARC147
C-Min Diff Sum
求
[深刻]D-Sets Scores
你要构造
一开始还以为是啥神秘容斥,结果发现被骗了,哈哈。
由于转移到下一个位置的集合时要么加一个元素要么减一个元素,我们考虑把每一次发生变化的那个元素记下来,这样得到了一个长度为
此时只需要确定
E-Examination
你有