01 2022 档案
摘要:复健训练了属于是)) A 考虑直接找第一个不上升的位置。如果没有就直接选最后一个数。 #include <bits/stdc++.h> using namespace std; typedef double db; #define int long long #define fi first #de
阅读全文
摘要:题目链接 \(\text{Solution:}\) 首先考虑我们到底要求啥,实际就是要快速求出对于一个数 \(x,\) 所有数与它异或后的 SIM 值。 一种 naive 的想法是直接枚举 \(T,\) 显然复杂度爆炸,因为 \(n\) 太大了,是 \(O(2^m\times n)\) 的。 考虑把
阅读全文
摘要:AT3954 [AGC023C] Painting Machines \(\text{Solution:}\) 首先可以考虑对每个数拆贡献,一个数如果有贡献显然是它自己有贡献或者排在它后面的数有贡献。 这个东西看起来就不好做。所以直接容斥掉,变成求它有多少情况不贡献。 此时当且仅当它后面的数和它自己
阅读全文
摘要:回滚莫队是对付一类操作难以撤回的莫队做法。 从例题开始。 【模板】回滚莫队&不删除莫队 题目要求区间中相同数的最大坐标差,显然地这个东西撤回是很难的。 那么考虑回滚莫队是如何做这件事情的: 首先我们把询问分块,然后将询问的左端点所在块作为第一关键字,把右端点置为第二关键字。 经过上述排序后我们发现,
阅读全文
摘要:CF631E Product Sum \(\text{Solution:}\) 考虑转化操作,显然有,设从 \(i\) 转移到 \(j,\) 若 \(i>j\) 贡献则为 \(s_{i-1}-s_{j}-(i-j)\times a_i,s_i=\sum_{i=1}^n a_i\) 如果 \(i<j\
阅读全文
摘要:CPU监控 \(\text{Solution:}\) 观察到有区间加以及区间覆盖,而询问历史最大值是一个相对棘手的问题。 观察到没有区间最值操作。考虑按照时间轴来下传标记:记录 \(cov[0],ad[0]\) 表示当前的覆盖、加法标记,\(cov[1],ad[1]\) 表示自从上次下传标记以来到现
阅读全文
摘要:[AGC022F] Checkers \(\text{Solution:}\) 看了题解半天之后的一种理解。 首先我们需要发现,一次操作本质上是选择两个点,把其中一个的坐标乘 \(-1,\) 另一个乘 \(2.\) 那么考虑建立一个点,然后把操作的两个点向这个点连边,边权分别是 \(-1,2,\)
阅读全文
摘要:[AGC028D] Chords \(\text{Solution:}\) 首先要观察到,如果把连通块的最小点和最大点连起来,那么每个连通块之间必然不相交。 所以我们考虑计算当 \(l,r\) 在同一个连通块的时候有多少种情况,最后就是枚举所有对然后加起来。由于 \(l,r\) 一个最大一个小,所以
阅读全文