Three Sequences
题单里为数不多的简单题(对我来说),我们发现如果为了提供一个贡献,而需要将整体提高,相较于提高一个位置的元素是更劣的。
所以,如果我们设其上升量 ∑max 为 k,那最大值就是 \frac{a1 + k}{2} 上取整。
因为这是 c_1 - b_n 最接近 0 时 b 的取值。
Korney Korneevich and XOR (hard version)
超简单的题,倒叙枚举,随便就有 f[i][j]: 对于前k个数字,结尾为i,异或值能不能组成j
然后随便优化,不难想到我们只需要每个上升子序列的最后一个数字来判断,改一下转移,
然后就有,vector<int> l[i]: 结尾小于i的子序列能得到哪些异或值
,里面存的数称为 x
,
因为每个 vector 里面不进重复的元素,拿出一次就删,
但是插入过程中还是会有很多重复,我们没必要重复将相同的元素插入同一段 vector,
所以用 th[i]: 对于i这个异或值,对于 x >= i,所有的 x 的列表都已经插入过 i 了。
就可以解决了。
Dominoes
普及签到难度的计数题,先考虑骨牌一黑一白的情况,共两种。
考虑有纯黑或纯白的情况,发现,它们可以将其左右的两片区域隔开,且会同时相邻出现。
同时它们可以让任意情况的骨牌有一个合法排列,不难发现我们需要用组合数,
如果初始有纯黑或纯白,显而易见,如果没有,那剪去无解的情况就可以了,
注意加上(如果可以的话)骨牌一黑一白的情况。
Xor of 3
入门水题,从小到大去思考怎样构造为 0 序列就可以了。
按照后两个元素的类型去分类讨论,然后倒序构造即可,具体过程
Tree Array
普及压轴难度,紫题水准,我们可以先找到根是什么,分别求出期望后,除以根的数量 n 即可,
本题的初态边界是固定的,所以可以顺推,
由于期望的线性性质,只需要考虑一个父节点的儿子中,较大的点先被选到的概率是多少,
最后乘逆元就可以了。
Happy New Year
可以将区间加转化为后缀和,将当前区间覆盖状态压缩,且要求覆盖在当前端点上,以便于转移。
Clusterization Counting
提高签到题,不难想到先对边贪心地排个序,加边操作用并查集维护,
由于加入某条边后,只有点之间两两有直接边相连才符合条件,所以我们将它设为可行团,
考虑可行团之间的关系,发现要么包含要么不交,于是按包含关系建成一棵树,类似树上背包做子树形成了多少个团即可。
或者也可以建立 Kruskal 重构树。由于重构树新加的节点维护的是一个连通块,其叶子节点是连通块中所有的节点,所以可以对重构树进行 dfs,每个合法的连通块都对应一个区间。
然后去 DP 求出覆盖完序列的所有方案。
Team-Building
我们可以先判定组内是否存在奇数环,再判断组外。
Magnets
交互题,一种办法是从特殊情况出发,另一种是分析要怎么做才能达到某种效果。
由于找到一个有磁极的磁铁,必须借助另一个有磁极的磁铁,
所以我们可以先二分找有磁极的磁铁,再与其它磁铁一一比较。
Switch and Flip
定义黑点为翻面的点,白点为未翻面的点。
我们发现,如果两白点换,必为黑点,一黑一白换,必为一黑一白,
不难想到最后解决黑点,但还不够,为了减少多余交换,我们先任意交换两个环上的元素,以合并成大环。
此时大环上恰有两个黑点,可以在规定时间内解决。
若环的个数为偶数,则两两处理。
若环的个数为奇数,可以将其中偶数个环合并,剩下的环单独处理,
如果环的个数为一,<= 三的情况手模即可,> 3,我们可以随意交换环上元素,将它拆成两个含有一个反面硬币的环,
然后将其它点解决,当其中一个环只有两个点时停止,写在草稿纸上不难发现可以在 <= 3 的次数内解决。
Matrix Sorting
神仙题,我们发现最优方案不会构造相同的局面,所以是拓扑序,考虑 DP 或拓扑排序,
Lost Array
有 bfs 和分类讨论两种做法,
bfs : 建图,操作次数 = 最短路
分类讨论:手模后,发现可以按 n mod k 的奇偶性讨论。
Mathematics Curriculum
神仙题,
Defender of Childhood Dreams
简单构造,考虑先摆大的再摆小的,逐层构造,
或者说假设空边都不重复,然后考虑怎么赋值使赋值后也不重复,
这样就可以先向一段整体赋值,再零散赋值,不难发现按结点数 k,k^2…,分组并赋上空边就可以解决。
Qingshan and Daniel
神仙题,按 AB 队机器人间隔的形式储存,用变量 cnt 存下当前局面 A 的贡献即可。