CF1344E Train Tracks 题解
Problem - 1344E - Codeforces
考虑我们肯定是对于每个点最终肯定是要进行若干次操作,每次操作是有时间限制的,不妨考虑需要在区间 $[l_i, r_i]$ 之间做完,那么对于这个东西我们肯定是考虑扫描线 $l$ 对于最小的 $r$ 进行贪心处理。
那么如果处理出来这个区间呢?本质上就是两条边进行更新的时候对于虚边进行翻转,本质就是 $\tt LCT$ 的 $\tt access$ 操作,那么时空复杂度就是和 $\tt LCT$ 操作类似。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412 ...
CF1355F Guess Divisors Count 题解
Codeforces - 1355 F
这个题好神仙呀!等等好像也没有那么难 /qd
显然我们只要知道了 $\tt X$ 的质因子,游戏就结束了。
然后题目还是允许有误差的,所以我们其实甚至不用找到 $ > \sqrt X$ 的质因子了。
之后考虑怎样去试这些质因子,发现 $2^{30} > V$ 感觉不是很行。
但是题目有一个比较松的限制:$\frac{1}{2} \le \frac{ans}{d} \le 2$。这个东西意味着因子个数只要是答案的一半就合法了。
我们考虑这个 $7$ 是来干什么用的,发现我们最蠢也是输出 $1$,所以考虑什么的因子个数是 $8$。
$3$ 个大质数相乘。
那么这个质数极限是多少?$\sqrt{10^9} = 10^3$。
考虑有更多质数相乘的情况,我们考虑肯定只有少量的大质数,根据条件我们是可以忽略一个大质数的,我们显然会忽略最大的那个。
具体来说我们考虑暴力枚举每个质数之后合并起来成为尽可能大的 $Q$,之后得到答案之后分解质因子得到哪些数是可以往大扩展的。
我们考虑对于如果一个数可能往大的方向扩展我们尽量优 ...
bitset 关于字符串匹配的应用
事情的起因来自这个:
前情提要:bitset 和 __builtin 函数 | Legendgod’s Blog
$\text{Ha宝: bitset 还可以加速字符串匹配}$。
$\text{legendgod: /se/se}$。
如果手动实现一个 $\tt bitset$ 会怎么搞,肯定是通过一个 $\tt int$ 压起来,之后如果范围内的就查表,如果范围外就直接暴力跳,这样复杂度是有一个 $\frac{1}{w}$ 的常数,同理其一位只需要一个 $\tt Byte$。
关于字符串匹配我们考虑对于文本串 $S$,找出每个字符 $c$ 出现的所有位置,存在 $bt_c$ 中。
对于一个串 $T$ 考虑对于其每个位置都与 $S$ 进行一次暴力匹配,不妨设其长度为 $m$。
考虑记录一个答案 $\tt bitset$,$ans$。其中 $ans_i$ 表示位置 $i$ 能否成为答案。
对于位置 $i$ 的元素 $T_i$ 我们考虑让 ans &= bt[T[i]] << (m - i - 1),可以发现这个东西本质就是对于每一位都进行一次验 ...
P6628 [省选联考 2020 B 卷] 丁香之路
[省选联考 2020 B 卷] 丁香之路 - 洛谷
感觉题目比较神仙。
首先画画图,第一个很明显的就是如果每条需要走的边的点都是单调的,那么答案肯定就是直接按照最近的点连接。根据这样的情况我们发现这个就是一条链。
之后考虑一个点度数比较大的菊花的形式,菊花就会导致我们被迫走回头路,这个东西不好考虑。鉴于我们可以随意加边,我们不妨将回头路看成一条新的边,这样我们最终的答案就是每条边都只经过了一次。
每条边只经过一次的路径 $\to $ 欧拉路径。
对于欧拉路径的情况我们只需要保证每个节点的度数即可。
对于欧拉路径我们可以让 $S \to T$ 进行连边,这样我们可以不用考虑起始点和结束点究竟连接的是那个点,直接变成欧拉回路。
之后我们考虑对于奇数点进行连边。
但是可能会出现若干个环的情况,我们还是需要考虑图的连通性。直观的想法就是考虑将不同连通块之间连边之后最小生成树。
显然我们贪心考虑相邻连边即可, 为了保证欧拉回路所以最小生成树上的边肯定会经过两次。
或者说如果要遍历一遍最小生成树而且回到起点,那么每条边肯定会经过两次。
回到起点的原因就是我们将起点和终点连边,他们肯定在一 ...
CF1635F Closest Pair 题解
Problem - 1635F - Codeforces
首先考虑一下如果已知一个位置 $i$ 怎么样选择 $j$ 最优,发现这个东西不是很好维护。
但是我们发现不知道怎样选择我们可以考虑有哪些 $j$ 可能成为最优解。
如果说 $x_{j1} < x_{j2} \ \cap\ w_{j1} \le w_{j2} $,那么 $j2$ 是没有必要的。
同理如果考虑已知 $j$,对于 $x_{i1} < x_{i2} \ \cap \ w_{i1} \ge w_{i2}$ 那么 $i1$ 是没有必要的。
显然这个东西是有单调性的,我们考虑维护一个单调栈。
不妨考虑从左向右扫,之后考虑加入一个元素肯定是要计算这个元素与之前元素的贡献。
考虑加入一个元素的时候一直进行更新直到找到一个没有必要更新的位置。
使用单调栈维护不合法的递增二元组即可。
这样我们加入的时候可以直接使用和当前位置不能有单调性的元素。
询问离线即可。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454 ...
CF1453F Even Harder 题解
Problem - 1453F - Codeforces
感觉按照图是不好做的,我们考虑这个序列是有特殊性质的,所以我们考虑按照序列做。
最终序列是固定的,考虑对于最终序列进行 $\tt Dp$,我们会需要记录最终序列,我们发现如果加入一个点的时候我们只需要知道当前序列的最近两个位置即可,不妨假设其为 $(u, v)$。
对于加入的点 $x$,我们肯定有 $u \le a_x + x < v$。
其次对于 $y \in [x + 1, u - 1]$,我们需要保证这些点是不能到达 $u$ 的所以需要删除贡献。
那么设 $f(u, v)$ 表示最后两个元素为 $u, v$,考虑转移到新的点 $v’$ 方程:
$$f(u, v) = \min_{k = 1} ^ {u - 1} (f(k, u) + \sum_{p = k + 1} ^ {u - 1} [a_p + p\ge u])$$
这个东西是 $O(n^3)$ 的。
我们考虑枚举 $u$ 之后,需要考虑剩下的条件也就是 $u \le a_k + k < v$,我们可以离线存下来,之后开桶按照 ...
给学弟的模拟赛1
fe45d12ef140a30fdc0b661d0183268471750015044655cf1a1b78f104b8661cf3a8bc6b782d2a060b88cdf2c9d822304de8576f5facce191a9362ffddc193e6a1e65e8c113a2f3ae68b6ccee8f20ef76d8aee70819bf328727abf4d101df94bdb85047df94a09badf95110ea592fd42079fb35086c94aedf0af07b27a349ab0a460320707e731b350b09bab5b5c118fe0801971f2c3b697677bde1569e553638ae6555e72a79ed5de11bde2df4a1f88bac8b4980c76504207ffb842b85b9ae42bffd60848f1cb8385f2a2175f928ea3c90ab2ebacc944ee8e3b1a57ea26aa83250687f8fa221efe8d0875ae605d43aaeb4d928bbe4ef49ca ...
CF1437F Emotional Fishermen 题解
Problem - 1437F - Codeforces
题目比较弱智,但是我更加弱智。
首先考虑排序之后肯定是没有关系的,从小到大进行插入。
考虑插入了 $i$ 位置之后的结果 $f_i$,我们发现如果需要插入必须找到一个位置 $j$ 使得 $2a_j \le a_i$,当然对于 $\forall k \le j$ 都是可以进行转移的。
我们考虑位置 $j$ 前面满足 $2a_k \le a_j$ 的最大位置 $x_j$,那么经过 $j$ 的插入之后总共有 $x_j + 1$ 个元素。同理对于 $i$ 来说序列的长度是固定的就是 $x_i +1$。
考虑插入到了位置 $j$,也就是通过 $f_j$ 进行转移,对于只受 $i$ 影响的数我们肯定可以在 $i$ 之后任意排列,数的个数总共有 $x_i - x_j - 1$。
$j$ 也是需要算进去的。
对于位置 $i$ 可以考虑还有几个位置可以放置,显然有 $n - 1 - 1 - x_j$。
减去 $i, j, x_j$。
所以方案数就是 $A_{n - 2 - x_j}^{x_i - x_j - 1} = \df ...