Involuting Bunny! (2021.8)
Tags:「A.生成树」「B.Tricks」
分类处理询问的 trick:连接两个连通块的边显然合法,先用这些边构建生成森林。发现每条边至多在一个环上,所以可以用 BIT 在 DFS 序上维护其余边是否可行。
Tag:「C.性质/结论」
把操作转化成“对于边 ,令 或 加上 ”,有以下结论:
-
合法的序列数量为 ,归纳可证不重不漏;
-
当 ,至多只有一种方案使得所有 ,递归构造可证唯一性;
-
当 ,存在方案使得所有 ,则 ,显然。
然后就随便做了。
Attention: 先分析性质,再想算法。例如这道题走起来想 DP 就裂开了。
Tag:「A.DP-状压/插头 DP」「A.分治-二分答案」「B.Tricks」
二分答案 ,枚举每种字符第一个长度超过 的位置的顺序关系,每次放置一定是尽量考前放,所以可以利用预处理判断,将这一过程状压即可。
Attention: 很讨厌这种字符串填充的题……不要一味地追求“扫一遍出解”!
Tags:「A.并查集」「A.生成树」「B.Tricks」
所以学了下 Boruvka 求 MST 的算法,类似于朱刘算法,维护连通块,每次求每个连通块连出的最小边,尝试加入这些边合并连通块。一共只有 次加边,故复杂度为 。这个算法的优势在于:如果 很大,但我们存在一种直接求出连通块连出最小边的方法,就可能回避复杂度中的 。
回到本题,在 间连从 跳到 所需的最小 ,求出 MST 就能预处理所有答案。使用 Boruvka 及上述优化 trick,利用 std::set
在 的时间内找最小边,可以做到 。
Tags:「A.并查集」「C.性质/结论」
考虑奇偶性,答案显然在 ,故只需判断答案能否为 。对于 ,并查集直接维护连通块。对于 ,考虑每个 带来的连通块之间的连边,暴力 记录信息,若两个连通块间有边答案就是 。
Attention: “素因子个数平方”是很小的,不要定式思维觉得“暴力”过不了。
Tags:「C.构造」「C.性质/结论」「C.思维」
震撼兔子一整年.jpg 首先分析一个 Simple 图的性质:,所以钦定某个点为 ,其邻接点为 ,然后 BFS 构造,每个结点的编号为与它邻接的上层结点的或和。易证。
此后,第二问,仅需对 Simple 图求解。由于颜色总数为 ,每种颜色出现次数相等,所以有解的必要条件为 ( 是 的整幂)。接下来给出人类智慧构造:
正确性易证,但能构造出来这玩意儿就离谱 qwq。
Tag:「A.DP-计数 DP」
这题评分和上题一样就离谱……令 表示长度为 的排列对 中 的逆序对数减 的逆序对数之差为 的方案数,利用二次前缀和优化转移。求答案枚举 的 LCP 和第一个不同位置的差值即可。
Attention: 注意检查模意义下的四则运算函数,这个写错就没救了。
Tags:「A.DP-计数 DP」「C.性质/结论」
一次操作起作用的条件是 ,记最终序列为 ,那么有 。考虑最前一段被操作影响的区间,有 ,进而 ( 即二次前缀和)。那么由于 任取,我们要保证 ,DP 一发。注意到有用的 取值不多,仅 中,所以可以预处理出所有答案。
Tags:「A.DP-杂项」「C.细节」
定义状态 表示 左手/右手 拿着第 张卡,右手/左手 拿着第 张卡时,能否通过 及其以后的限制。转移枚举下一个换手的位置,显然这样的位置如果合法,必然越靠前越好。以 为例,为了转移它,仅需记录从 为 的 开始,左手牌的限制区间交集和是否每张右手牌都能通过紧接着的限制,虽然比较麻烦但不难想。(
Attention: DP 时注意不要让新的信息覆盖掉需要使用的旧信息,写完回头捋一捋各个变量在当前的意义!
Tag:「C.性质/结论」
打序列上游戏的 SG 表知环上后手必胜,而且后手操作只要合法都必胜。所以只需对双方共进行偶数次放置的结束状态计数。枚举放置数量,显然有
Attention: 你总不能把 SG 表打错了吧 qwq!
Tags:「A.缩点/圆方树」「B.模型转化」「C.性质/结论」
从 easy 版消除所有沙子为目标,可以把沙子的影响关系建图,每坨沙子向向上左右连至多一条边,缩点之后 入度点的个数即为答案。对于 hard,合法条件等价于每列第 坨沙子被消去,所以问题变成在 DAG 上选择若干点,使对于每个关键点,都至少有一个选择的点可以到达它。不难证明每坨沙子能覆盖的关键点是一个连续区间,所以可以拓扑出每个点的覆盖区间,此后转化为区间覆盖问题,随便贪心即可。
Tags:「A.DP-概率/期望 DP」「A.DP-状压/插头 DP」「A.数学-容斥计数」
容斥列和对角线的是否满足,行的概率可以直接算出来,结束了。(
Tags:「A.DP-最短路相关」「B.Tricks」「B.优化建图」
解决“原地等待边旋转指向某个结点”很好办:新建 即可。然后你发现不管这个图上的边怎么扭,Dijkstra 这类最短路算法的贪心结构是一直保证的,所以写一发 的 Dijkstra 就行。
注意这个细节:也许图在变,但并不妨碍某些算法的正确性。
Attention: 略过或者叉掉某个思路的时候麻烦严谨说服自己,好多次都是秒出正解(比这题难的那种)然后莫名其妙就不想了 qwq。
Tag:「A.DP-数据结构优化 DP」
维护 棵线段树,第 棵的 位置表示 从该状态转移到当前位置的花费,细节不难。
Attention: 虽然因为考虑到是 CF 所以才这样干,决策单调性什么的至少得打个表在下结论吧……如果在一个未证、甚至已证的结论下无法优化,不要一根筋,重启解决 的问题。(
Tag:「A.数学-组合计数」
求“超过 盏灯亮”的概率之和,问题在于求“ 个球里选 个,两两之间至少隔 个”,经典问题,先拿出用于分隔的 个,选完放回去,方案数为 。
Tags:「B.Tricks」「C.构造」「C.思维」
一种重要的构造思想:给对象分类。例如奇偶分类、构造二分图……本题中,就可以按 此图(为了不占版面就不放图了 awa)所示把格子分为四类,发现蓝色格子是万能的,不可能与任何格子冲突,那么就把这类格子当做缓冲。具体地,依次填黄色和红色格子,发现填不了就丢蓝色格子。另一方面,可以根据必要条件算出答案下界,由构造方案知下界一定可行,这里不细讲。(其实直接二分答案放置也是可以的。)
Tag:「B.贪心」
贪心地递归,把树拆成若干链,具体地,递归出 子树时,需要知道 能否继续向上连边,若能,链的底部是谁。
Tag:「A.数学-数学推导」
好啊,模数敲错了!好啊,组合恒等式写错了!好啊,二项式定理合并错了!我想把自己炖了艹。
(不得不写成 了,那个大括号怎么打出来 qwq……)
Tags:「C.构造」「C.思维」「C.性质/结论」窒息标签三连击 qwq
分类思想,如果能和 连就先连上。那么此时左森林的结点 与与之对应的右森林的结点 有三种情况:(1) 都在 连通块;(2) 在 连通块;(3) 在 连通块。我们发现 (2) 情况的 可以和 (3) 情况的任意一个 连边,此时 都进入 连通块。到无法操作时,必然有一片森林退化为树,所以答案达到了理论上界 。
Tag:「C.构造」
,构造 个方程解出 。
Tag:「C.性质/结论」
是不是外国友人的技能树点得和我相差很远啊,这种玩意儿怎么都比上面那道简单吧。
令 表示 循环位移 次的结果,设 和询问排列 的不相同位置有 个。由于 次交换最多涉及 个元素,所以 合法的必要条件为 ,发现 ,且对于每个 ,有且仅有一个 满足 ,所以暴力检查满足这一必要条件的 即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现