07 2023 档案
摘要:upd 2023/10/17 : 被人叉了,改了一下。/kk 更优质的阅读体验。 大概就是容斥一下,令: 至少被 种操作覆盖的格子数为 (允许算重,即一个格子对 的贡献是它被覆盖的次数,下同)。 至少被 种操作覆盖的格子数为 。 至
阅读全文
摘要:**题意**: - 给定一棵根为 的二叉树 ,根上有 个水果。 - 某些枝条(二叉树的边)会断掉,留下一个包含根节点的联通块 。 - 给剩下的 中每个点 赋点权 表示这个点上的水果数量,满足 并且 $a_u\ge \sum\
阅读全文
摘要:参考了 cmd 的多项式计数杂谈,拜谢。 考虑题目给定的其实就是 分布的 PGF 。那么令 表示操作了 轮后 的 PGF,则 。 考虑一次操作对 的影响,若操作成了 : $$[x^k]F_{i}(x)=\s
阅读全文
摘要:pb 讲课题,还是有点坑的。 考虑到 和 都很小,可以先将所有点对于 坐标排序,枚举答案凸包最左边那个点 。然后设 表示走了 步,目前位于 点的最大面积,答案就是 。 考虑从 转移到 $f
阅读全文
摘要:pb 讲课没讲的题,感觉很牛逼啊!但不是牛逼在多项式,因为多项式大家应该都会。 考虑从前往后扫的过程,只要有正面就翻成反面,所以最后只有可能是当 $p_i #define int long long using namespace std; namespace vbzIO { char ibuf[(
阅读全文
摘要:小清新 prufer 序列。 > 给定 ,求 个点且最大度数为 的有标号无根树个数。 看到度数,不难想到 prufer 序列。 众所周知,prufer 序列给出了长度为 值域为 的序列与带标号无根树的双射。某个点的度数为 ,那么 在 p
阅读全文
摘要:目前为止我是 Luogu 上最优解,不保证后面会不会被神仙同学刷下来,比如 @sinsop90。 upd : 现在不是了,@JWRuixi 用循环展开把我爆踩/ll。 令 表示第 层上面那个门, 表示右边的门, 分别表示**它们连向
阅读全文
摘要:这种点对移动互相感染的题,一般可以建笛卡尔坐标系。每个点 坐标为 ,若有两个点 的相遇时间为 ,即 。 所以当且仅当两个点连接直线的斜率为负数时,两个点会在时间 $t_{ab}=-k_{a
阅读全文
摘要:首先如果一开始 和 相同,可以直接输出 。 否则 枚举一个被操作的叶子 ,和 接到了的 点,此时 不能再被操作,所以将其当作新树 和 的根节点。 由于操作是作用于叶子的,所以一个非叶节点想要被操作,当且仅当其所有
阅读全文
摘要:考虑先手操作完后得到的序列为 ,后手如何操作得到最大答案。 由于不互质的数不能交换,所以任意一对 ,后手操作后相对顺序不变。 所以可以枚举每对不互质的数,编号小的往大的连边,然后用优先队列跑最大拓扑序。 再考虑先手如何操作。 容
阅读全文
摘要:神仙题。 由于时间限制 ,我们可以整点怪的,比如根号分解质因子。 但是直接分解是 的,值域为 即 ,肯定会炸。 毛估估一下,如果需要分解质因数,大概只能分解到 的质数。 我们把小于 $\sqr
阅读全文
摘要:经典题。 考虑 dp,然后发现你根本 d 不动。 冷静思考,发现原因在于,无法在较小的复杂度内确定选数的状态。 遇到这种情况可以考虑容斥。设 表示强制选 个位置满足 。 显然 $\text{ans}=\sum\limits_{i=0}^n(-1)^if(i
阅读全文
摘要:sweet tea. 手玩一下发现「交换」的性质是具有传递性的,所以考虑一个 做法: 枚举每个点对,如果满足交换条件,则连双向边。显然一个连通块内的点可以互相交换,而不同连通块之间互相独立。答案就是 $\prod\limits_{i=1}^m\dbinom{size_i}{s_{i
阅读全文
摘要:简单题。 发现 很小,所以一个箱子可以用一个二进制数 表示,值域 。然后就变成取出若干个 使得或起来为全集的方案数。 将所有 按位取反,即求若干个 与起来为空集的方案数,就是[这题](https://www.luogu.co
阅读全文
摘要:[更好的阅读体验。](https://www.cnblogs.com/Ender32k/p/17125914.html) 假设值域为 即 ,显然每个质因数 独立,考虑计算每个 对答案的贡献。 对答案的贡献次数为 $\sum\limits_{S\subset
阅读全文
摘要:好像挺神奇的,也可能是我菜。 以下称前 条边为「树边」,因为它们组成一棵树;后 条边为「回边」,因为它们由树节点回到根。 就是对于一个询问,如果 在 的子树内,发现无论如何答案都要包括 的只经过树边的路径。那么只走这条路径一定是最优的,直接维
阅读全文
摘要:upd 2023/3/16:更改了时间复杂度的错误。 ~~其实是暴力。~~ 因为这是模板题,所以模板的前置知识也要讲。 - 前置知识:FWT 计算或卷积。 这里只需要掌握快速计算或卷积的方法,所以内容较少。如果向了解更多(比如异或卷积)的话可以去 [P4717](https://www.luogu.
阅读全文
摘要:太神仙了。 直接子集卷积肯定是不行的,1s 的时限和 62MB 的空间摆在那里。 那就要考虑使用模 的性质乱搞了。 我们考虑给每个 ,不管它符不符合条件,赋一个权值。如果 ,它对答案是没有贡献的,否则它能贡献到 $i\ \text{or}
阅读全文
摘要:考虑先手必胜的充要条件。 实际上,只要 为奇数或者本质不同排列为偶数时先手必胜。 为奇数时,先手必胜,答案就是 。 为偶数时,令 为第 个字符出现次数,。反面考虑,我们相当于求 $\dbinom
阅读全文
摘要:难点在于读题。 由于每个人有 种选法,答案其实就是某个人赢两次的方案数。 由于三个人本质没有差别,并且一种方案至多只有 个人赢两次。所以不妨设 A 赢了两次,答案就是方案数乘 。 考察 A 对于 B 和 C 的比赛,每个人的投票结果,第 个人的投票为 和 $
阅读全文
摘要:这东西在线不太能做,考虑离线扫描。扫描右端点 ,我们对每个位置 维护一个 表示最小的 使得 是 的合法子区间。 考虑如何维护 。考虑新加入的右端点 ,加入一个数 ,上一次出现的位置为 $lst_{a_r}=c
阅读全文
摘要:这个涂色很容易让人想到均摊的 set 维护,但是有可能修改同一个位置,不太可做。 同样地,我们考虑只带插入不同位置的情况。 考虑一个线段树做法,直接维护整行格子的权值和以及黑色格子的个数。考虑一个修改 相当于区间覆盖 ,其中 中修改前白色格子的数量为
阅读全文
摘要:好神奇的做法,我称其为猪猪(猪笼原理)分治。 记 的个数分别为 。有一个显然的 做法,对每个 枚举其为 即可。 然后我们考虑只有 的情况,把所有 当成 ,答案就是一个超集和;同理,对于只有 的情
阅读全文
摘要:其实这题有两种建模方法,因为我都写了,所以两个都讲好了。 一眼二分答案,转为判定性问题: > 给定含有**无向边和有向边**的图 ,判断是否存在欧拉回路。 首先先判掉存在 , 的情况。 不能简单地根据度数判断,考虑网络流建模。 - 方法 :
阅读全文
摘要:下面认为 。 有一个显然的暴力:对每个点 ,预处理出另外所有点 是否能到达 ,记为 。查询 ,但是预处理 。用 `bitset` 优化即可做到 $O(q+\frac{n^4}{\omega})
阅读全文
摘要: 然而这个经典做法是分治,我不太会做,但这确实是一道经典题。 考虑扫描线,对从左到右每个点 ,统计以 作为右端点的区间个数。 由于 端点固定,$S(l)
阅读全文
摘要:大半个月前做的题,现在才写题解,/qd/qd。 贪心,选出 个不相交子段的和的最大值,其实相当于每次把序列最大子段拎出来,加上去,然后取相反数。 证明的话可以考虑模拟费用流,, 连边, 连边, 连边,边的流量均为 ,$
阅读全文
摘要:这里只讲[加强版](https://www.luogu.com.cn/problem/CF280D),这是严格弱化。 结论是贪心。每次取出最大和连续子段,目前答案加上这个子段和,然后再把这个子段取反(相反数T),然后求整个过程答案的最大值。 考虑费用流模型。对于 ,
阅读全文
摘要:小清新斜率优化题。 分段问题显然 dp,令 为将第 根柱子和第 根柱子连接的最小代价。,每次枚举 向前直接连接的柱子: $$f_{i}=\min\limits_{j=1}^{i-1}\left\{f_j+(h_i-h_j)^2+\sum\limits
阅读全文
摘要:简单题。 向 后**第一个** , 比 大的点连边,不难发现最后形成了一棵森林,并且一个点的父亲 。 题目变成了取 中的点为起点,向祖先方向走去并且终点编号 的最长链长度。 考虑离线,维护从每个
阅读全文
摘要:简单题。 先把树拍扁成序列,在 dfn 序上区间修改区间查询。 由于时限 4s,我们可以整点怪的,比如 `bitset`。 把区间内的数有/没有表示成 序列,考虑到区间加取模相当于区间内的数全部**循环右移**,用 `bitset` 可以做到 。 然后
阅读全文
摘要:简单题,不知道为啥和[弱化版](https://codeforces.com/problemset/problem/526/F)一个 Difficulty。 考虑弱化怎么做。 区间 中的数是连续的,当且仅当区间最大值 减去区间最小值 为 ,即 $
阅读全文
摘要:煎蛋提。 不妨令 ,由 的和性不难推出 为**完全积性函数**,因此可以考虑杜教筛。 考察 和恒等函数 的卷积 ,不难发现 $(g*I)(p^k)=\sum\limits_{i=0}^kg(p^
阅读全文
摘要:题目中说 个点的无向完全图有 条哈密顿路径。如果我们考虑方向(即每条路径钦定起点终点)的话,一共就有 条了,因为一条路径 可以钦定 或 。为了方便符号表达,**以下都按照哈密顿路径数为 即路径
阅读全文
摘要:先考虑只能放**整点**的情况,不难想到考虑 dp。 对于环上的 dp,考虑**断环成链**,即钦定一条线段的左端点为**起点**。这里我们令长度**最长**的线段的左端点为环的起点。 这样做有一个好处:我们不用考虑**一条线段把环末尾覆盖再覆盖开头的空**的情况,而当我们钦定一个长度较小的线段作为
阅读全文
摘要:考虑一个**横向**单调数列 如何形成,我们**从小到大**填数,填到 时,假设 填在 处:若 两个格子上**恰有一个位置有值**就寄了。纵向的单调数列类似。 于是填数的过程中,我们只关心每个格子上有/没有数。如果这
阅读全文
摘要:拉插优化 dp 在卷怪们眼里已经变成套路了吗,害怕。 考虑一个 dp 的推。设 表示 子树中填 符合题目条件的方案数,此时不强制 选 ,所以有: $$f_{u,i}=f_{u,i-1}+\prod\limits_{v\in \text{son
阅读全文
摘要:### Description 给定 ,求对于所有 个点的,满足恰有 条从小连向大的边,即 $\sum\limits_{(u,v)\in E}[u 给竞赛图每个 SCC (强连通分量)缩点后,剩下的是由一条**极长**的链与某些前向边组成的图。 于是 SCC 的数量能够转换
阅读全文
摘要:参考官方题解。 你发现这个覆盖不太好考虑,考虑时间倒流,变成如下形式: > 一开始,小 A 的位置上有一个数 ,然后对于接下来 步,每次小 A 可以向左走/向右走/不动,然后如果此时小 A 所站的位置上**没有数**,就写上 ,求最后形成序列的最长上升子序列长度。 考
阅读全文
摘要:根据唯一分解定理,令 ,则 $\text{lcm}(x,y)=p_1^{\max(q_1,k_1)}p_2^{\max(q_2,k_2)}\cdots
阅读全文
摘要:这个人赛时只过了这题,但是同学 @[sinsop90](https://www.luogu.com.cn/user/141599) 赛时只没过这题,怎么会是呢? 考虑到 之间路径必须经过关键点,假设这个关键点为 ,那么路径形式一定是 (废话)。 画一下图发
阅读全文
摘要:考虑如何判断一个方案是合法的,很容易想到贪心,从左到右考虑第 棵树: - 如果这棵树能向左倒即 没有被占据,就向左倒。 - 否则向右倒。 显然向左倒对之前已经倒下的树没有影响,而对后面的树来讲,这棵树向左倒能留下尽量多的空间,所以优先向左倒一定不劣。 所以考虑一个
阅读全文
摘要:你也许说得对,但我是真看不懂第一篇题解那个答案式子…… 预处理是差不多的。 设 表示从 的期望步数, 为 的期望步数, 为 的度数。 那么显然有: $$f_u=\frac{1}{d_u}\left(1+\su
阅读全文
摘要:类似随机游走,令 为第一次操作到 的期望操作次数, 为每次操作数为 个概率,显然有: $$f_i=\begin{cases}0&i=0\\1+\sum\limits_{j\;\text{xor}\; k\ =\ i}p_jf_k &i\neq 0\end{cas
阅读全文
摘要:考虑只有一次询问的时候怎么做。 显然的 cdq 分治,每次分治区间 ,统计跨过 的区间的个数。可以枚举区间左端点,由于右端点右移时区间或单调非降,可以双指针维护。 充分发掘题目条件,由于是区间或,还有一个很套路的性质:一个
阅读全文
摘要:一个月前做的题,放在现在写题解。其实还有一道半年前的,但不想写了。 这个最大值其实是诈骗,考虑计算每种权值的方案数。 考虑把位运算当成加法,此时答案如何计算。那么每条边边权就变成了 , 为权值。然后跑矩阵树定理: $$c_i=[x^i]\sum\limits_{T\in G
阅读全文
摘要:这里是加强版,。 考虑到最后删剩下括号序列形如 `(((...(()))...))`,想到枚举分界点。 设 为当前枚举的分界点, 为 内 `(` 的个数, 为 内 `)` 的个数, 为 内 `?` 的
阅读全文
摘要:Hint 是 个 之间均匀随机分布的数的第 小值的期望为 ,证明可见[这篇博客](https://www.cnblogs.com/penth/p/9743303.html)。 考虑 Kruskal 求最小生成树的过程。从小到大加入每条边,
阅读全文
摘要:有一个很蠢但是很好写的做法。 就是你先令 为与起来恰好为 的方案数,然后 为与起来子集中有 的方案数。 然后 ,反演一下变成 $t_{S}=\sum\limits_{T\subseteq S
阅读全文
摘要:DS 好闪,拜谢 DS。 考虑二进制的情况怎么做,那这两个操作就变成了取反和全局加 。 建 `01-trie`,如果是 反转的话打交换儿子的标记即可。考虑全局加 ,最后一位 状态反转,并且反转后为 的位置会对前面的位有进位。递归 链并顺路交换左右儿子即
阅读全文
摘要:显然不能考虑所有方案,于是考虑每种连通块对答案的贡献。 把环当作序列,线当作区间,两个点之间有边意味着它们对应的区间有交,并且**互不包含**。 由于互不包含的性质,我们就可以进行 dp 了。 令 表示仅考虑 区间内的连边(也就是说外面没有边伸进来), 和
阅读全文
摘要:神仙构造。 因为余数相等不好构造,所以想到钦定这个余数为 ,比较直观的方法就是取出一些不相邻的格子,然后它们的权值为其相邻格子的 。由于它们权值比较大,称其为**大格子**。 显然**最多能取 个大格子**(棋盘染色取同色即可),那么
阅读全文
摘要:捐钱太亏了,我们倒序考虑,于是就变成了抢钱。 于是对于一个点的限制 ,令 ,表示到这个点之前你至少拥有的钱数,并且到了这个点之后会抢到 的钱。 考虑建立 重构树使得树上每条边 $fa_u
阅读全文
摘要:首先我们发现在删的数的数量相等的情况下,尽量细分是不劣的。 所以我们可以假设每一段长度至多为 ,同时长度严格 。 复杂度 。 [评测记录。](https://codeforces.com/contest/940/submission/189160602)
阅读全文
摘要:CF 评分有毒吧,暴力题上 *2900。 先口胡一下,代码等会再写。 首先考虑 ,那 个属性对应的人的状态只有 个,可以把状态相同的属性都合并成一个属性。 取 和 操作就变成了两个人与/或起来。我们可以对每个属性
阅读全文
摘要:#### 简要题意: 给你两个序列 ,一次操作可以将 的某一个长度为 的子区间全部异或上任意值, 为使得 和 相同的最少的操作数量。 支持单点修改 ,并在开头和每次修改后输出 的值。 $n,k,q\le 2\tim
阅读全文
摘要:分块,但是带 。 先离散化,然后值域就变成 的了。 我们先对每个点维护一个 `bitset`,那么显然答案就是 到 路径上所有点的 `bitset` 或起来后 的个数。 然后可以树链剖分,把链拍成序列,并且对树链剖分后的 `dfs` 序维护 $\sq
阅读全文
摘要:#### Description 给定一个有 个点 条边的**有向强连通图**。称一个点是**好的**当且仅当它到其他点都有且只有一条**简单路径**。如果好的点至少有 则输出所有好的点,否则输出 `-1`。 $\sum n\leq 10^5,\sum m\leq 2\
阅读全文
摘要:考场花了一张 A4 的草稿纸在这题上面……还导致 T4 没时间调了。 你要是想看我 T4 挂的多惨可以去看[ T4 题解](https://www.luogu.com.cn/blog/Ender32k/p8819-ti-xie)。 不难发现其实就是给一个 和一个
阅读全文
摘要:赛时因为 T4 这题一眼没看,事后发现真的神仙。 简化题面后条件为: 1. 所有点出度为 。 2. 从所有点走出去都能走到环上。 不难发现条件仅为判断所有点出度为 ,即判断是否是一个**内向基环树森林**。 再看操作: 1. 删掉一条边 2. 对于 ,将所有边 $(
阅读全文
摘要:写一下题解,顺便纪念一下考场上少加一个等号挂 100 分的事实。 比今年简单的 csps 不多了……希望 noip 不要寄成这个狗样。 如果说错了请线下打我。 考虑搬到序列上的做法,即给你 ,求 中取若干数,构造序列 $p_1=l,p_m=r,\fo
阅读全文
摘要:根据不知从何而来的传统,考前需要写数据结构。 ### Part 1 如何判断二分图 你要是用染色法暴力过了这道题那就只能说是真神仙…… 但是我们可以使用染色的思想。 考虑到颜色数不多,可以开 个**拓展域并查集**,对于原图每个点我们拆成两个: 和 ,如果 和 $
阅读全文
摘要:一发最优解祭( ### Description 给定一棵树,节点 到 标号, 个操作,你需要维护一个路径**可重**集合 ,操作一共三种: 1. 向 集合加入 。 2. 在 集合中删掉 (保证操作之前有加入,并且**只删一个
阅读全文
摘要:发现挨位考虑填哪个不太现实,考虑值域。 令 表示考虑到 ,此时序列长度为 , 到 填空状态为 的方案数,考虑选/不选数即可: $dp_{i,j,st}\times (\text{popcount}(st)+1)\to dp_{i
阅读全文