摘要:
这里记录一下写代码犯过的错误。 基环树找环的时候要判断走到这一个环上点为止 每次新找环都要清空栈 找到环不要贸然 return, 要在这一次 dfs 中标记好所有点。 如果要累计贡献并改变节点位置,先累计贡献,再移动节点。 如果有形如无法匹配的 \(dp\) 失配,记得它可能会记录某些状态来继续转移 阅读全文
摘要:
共菜鸡笔者看的……会慢慢更新,也请看到的大佬留意一眼,指出不足。 对于一些对部分点的二维$dp$,状态从左上角继承而来时,对于一个点$(x,y)$,对它编号$x*m+y$,按照这个顺序$dp$,可以保证更新当前值之前前面的已经被更新。 善于发掘题目的性质。对于一些一眼看上去没法$dp$的东西,观察题 阅读全文
摘要:
SDOI2022 游寄 Day -7 停课,全天学习 OI 。但是每天的早读还是要上) 不知道哪里来的安逸心态 可能是感觉今年无望 并没用特别强烈的紧张情绪 (tag1) Day -3 教练打算让我们提前适应一手省选考试环境,于是模拟了一手 9h6T 。感觉考下来有些疲惫 但是感觉能拿的分倒是差不多 阅读全文
摘要:
#2461. 「2018 集训队互测 Day 1」完美的队列 \(\text{Solution:}\) 首先需要考虑我们需要知道什么。如果我们知道了一个操作什么时刻被完全删掉,那么就可以做了。 因为题目求的是所有队列的并。 所以我们考虑对序列分块,那么一个操作就会被我们分成覆盖整块的部分和覆盖散块的 阅读全文
摘要:
复健训练了属于是)) 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\) 一个最大一个小,所以 阅读全文
摘要:
UVA11270 Tiling Dominoes \(\text{Soluton:}\) 经典轮廓线 \(dp\) 题目。 定义:我们进行逐格 \(dp,\) 设当前在格子 \((i,j),\) 那么轮廓线就是当前这个位置之前的同行格子和这个格子往右的上一行的同行格子的状态。 设 \(f[i][j] 阅读全文
摘要:
CF990G GCD Counting \(\text{Solution:}\) 考虑一个 naive 的想法,首先直接枚举答案 \(i,\) 然后把所有是 \(i\) 的倍数的点全部拉出来,这样它们就会组成一些连通块。 依次统计其路径条数,那么这些就是 \(i|\gcd\) 的答案。 那么设 \( 阅读全文
摘要:
终究是退役了。有缘再见。 Day -14 开始停课。终于摆脱了文化课,但早上还是要去上早读……机房里就在补之前的比赛题,很迷茫。 Day -10 报了网上的集训,两天三考。成绩逐渐从 \(0\) 变成 \(300+\) 又到 \(100+,\) 题目难度以及短板非常明显。 然后开始背板子。 Day 阅读全文
摘要:
2-SAT 用来解决一类如下形式问题:有 \(n\) 个针对布尔变量的或条件,求一组解。 考虑按照命题连边,也就是从中找到必要的逻辑关系进行建图。那么显然,有两条边:一条是原命题,一条是逆否命题。 建图之后跑缩点,那么缩在一起的点一定是可以互相推出的。 那么,如果 \(x\) 与 \(!x\) 合并 阅读全文
该文被密码保护。 阅读全文
摘要:
可持久化并查集 \(\mathcal{Solution:}\) 首先考虑一个常用的并查集是如何实现的。显然为了方便实现,我们大部分时间用的都是路径压缩。 但是当需要可持久化的时候,如果我们进行了路径压缩,那么我们就会发现,我们会破坏原有的并查集结构,也就破坏了可持久化的结构基础。 所以我们考虑另一种 阅读全文
摘要:
F - Score of Permutations \(\text{Soluton:}\) 首先看清题意,对于每一个置换环,球会不断轮换,直到停止。而停止轮数自然也就是所有环长的 \(\text{lcm}\) 了。 那么考虑对一个 \(\text{lcm}\) 算贡献。有一个显然的 \(dp:\) 阅读全文
摘要:
[SNOI2017]炸弹 \(\text{Solution:}\) 我们发现也就是每次将一个点往周围的点连边然后求每个点能到达的节点数。 点对区间连边,考虑线段树优化建图。 建完之后跑缩点,然后我们发现不会 DAG 上求这个问题。 但是我们又可以发现,我们可以在缩点的时候求出每个点往左往右能到达的最 阅读全文
摘要:
CF1603C Extreme Extension 考虑如何计算贡献,显然的一般 \(dp\) 套路就是设 \(f[i]\) 为以 \(i\) 结尾的所有子区间的贡献。 但是这题我们发现这个结尾要和数字有关。所以先试着写一下普通的 \(dp:\) \(f[i][j]\) 表示以 \(i\) 结尾的子 阅读全文
摘要:
【模板】树同构([BJOI2015]树的同构) \(\text{Solution:}\) 由于月赛有一个和树同构相关的题目,所以来学一下树同构。 这里不用树哈希的做法,考虑用括号序列。 我们发现:当进入一个点的时候记录一个左括号,出去的时候记录一个右括号,这样会形成一个长度为 \(2n\) 的括号序 阅读全文