随笔分类 - 题解
摘要:假设当前在确定玩家 p 是否能成为唯一的赢家。 假设 p 能赢下所有不确定的比赛,令 win 表示他赢的数量。 如果 win=0 显然他不能成为唯一的赢家,下面都假设 win≥1。 考虑网络流建图。 建立源点 S,汇点 T,Ai,j 表示玩家 i 与 $
阅读全文
摘要:乘积是立方数说明分解质因数之后每个质数的指数都是 3 的倍数,于是可以对每个数的质因数进行哈希,指数对 3 取模,哈希之后求一遍前缀和,如果 Hr=Hl−1 就说明是立方数,否则不是。 Code: #include <bits/stdc++.h> using namespace
阅读全文
摘要:对于一个 p×m 的矩阵 A,与 m×q 的矩阵 B,定义广义矩阵乘法 A×B=C 的结果是一个 p×q 的矩阵 C,满足: $$C_{i,j}=(A_{i,1}\otimes B_{1,j})\oplus(A_{i,2}\
阅读全文
摘要:先来研究没有初始球情况下的简单版本: n 个小球,m 个盒子,每个小球等概率地放到盒子里,这样有 nm 种方案,每种方案的贡献是每个盒中球个数的乘积,计算所有方案贡献总和。 设 xi.j 表示第 i 个盒子中是否放入了第 j 个球,取值只有 0 或者 1。 对
阅读全文
摘要:首先有一个 O(N2) 做法。 考虑容斥掉条件一,令 g(i) 表示恰好有 i 个花园空着的方案数,f(i) 表示钦定有 i 个花园空着,剩下无限制的方案数。 则有 g(0)=N∑i=0(−1)if(i)。 而 $$f(i
阅读全文
摘要:考虑重新刻画一个序列的生成,设原数列为 (0,0),将所有数从小到大排序后依次加入。 例如 (2,3,1) 是这样生成的: (0,0)→(0,1,0)→(0,2,1,0)→(0,2,3,1,0)
于是问题变成多少种方案使得这样的序列存在 k+1 个位置 i 满足
阅读全文
摘要:首先可以想到枚举每条边上的白色石子个数,记为 k。 则最终答案为 d+1∑k=0f(k),f(x) 表示每条边的石子个数为 x 时的答案。 那么可以想到一个暴力的 dp 状态,设 fi,j,k 表示考虑了前 i 条边,最开始的点的颜色是
阅读全文
摘要:首先显然能想到二分,随后想想怎么判定。 ~~这里我卡住了(~~ 看了题解发现是一个常用的技巧。 先把所有 Y 的位置存下来,记为数组 A,记 Bi=Ai−i,那么发现交换就相当于把 B 中某个值加一或减一,接下来就是 check 能否在 K 次内形成一段连续的相同的值,由于
阅读全文
摘要:首先题目要求删去边权和最小的边使得图变成一张二分图,那么看到二分图就想到染色,那么题目的意思就是让同色节点之间的边权之和最小。不失一般性的,强制 0 节点为白色。 由于原图是一个环,这不好处理,考虑断开 N 和 1 之间的边,那么这样就能设计出一个 DP 状态,fi,j,k 表
阅读全文
摘要:前置:ABC214D 那题只要求 max,将边按照边权从小到大排序后依次加入,用并查集维护连通块大小并更新答案即可。 Code 于是这题也一样,把 max 和 min 分别求出来,然后减一减就好了。 但是有一个问题,这题是点权,如何转化成边权呢? 假设当前求 max。 那么将
阅读全文
摘要:套路题。 设 M=105。 设 f(i) 表示路径的 gcd 恰好为 i 时候的贡献,则答案为 ∑Mi=1i×f(i)。 套路的,将限制变成路径的 gcd 为 i 的倍数,设 g(i) 表示此时的贡献。 则有 $f(i)=g(i)-\
阅读全文
摘要:设 fi,j,0/1 表示考虑前 i 列,删去了 j 条边,目前上方和下方连不连通的方案数。 则有转移: fi,j,1=fi−1,j,1+3×fi−1,j−1,1+fi−1,j,0
$$f_{i,j,0}=2\times f_{i-1,j
阅读全文
摘要:首先先把颜色都离散化。 设 f 为所求答案,那么对于 f(1)∼f(n) 分别计算其期望。因为期望的线性性,分别考虑每种颜色被选中至少一个的概率(因为每种颜色对答案的贡献是 1 所以期望就等于概率)。 设有 m 种不同颜色,第 i 种颜色出现次数为 cnti,则有:
阅读全文
摘要:不难发现一定是拔高一段后缀。 所以设 fi,j 表示考虑前 i 个位置,拔高 j 次,第 i 个位置强制选的 LIS 的长度。 则有 $f_{i,j}=\max\limits_{1\le x\lt i,0\le y\le j,a_x+y\le a_i+j}\left{f_{x,
阅读全文
摘要:可以发现直接将每种颜色的第 i 个球分给第 i 个人就可以取到最优解。证明在下面。在这个方案中将每个人的第 i 个球标上 i,能取到最优解的方案中,标 1 的必须仍然是某人的第一个球,标 3 的必须仍是某人的第三个球。O(n) 正反扫两遍分别计算标 $2
阅读全文
摘要:设 fi,j,k 表示从 i 往前,第一个与 ai 颜色不同的位置是 j,第一个颜色与 ai,aj 都不相同的位置是 k 的方案数,其中某个值为 0 表示这个位置不存在。当然 i>j>k(特别地,当 j=0 时 k 可以为 0
阅读全文
摘要:寄,这都没看出来( 考虑把涂绿色看成同时涂上红色和蓝色,显然这是等效的。 这样红色和蓝色就独立了,枚举红色的个数即可。 时间复杂度 O(n)。 Code: #include <bits/stdc++.h> using namespace std; typedef long lo
阅读全文
摘要:设 fi,j 表示前 i 个位置使用 j 个 1 的方案数。 转移很简单:fi,j=fi−1,j+fi−1,j−1 但是有些状态是非法的,所以对于每个 i 求出其前缀可以操作的最右的位置 Ri,以及 prei 表示前缀 1 的数量。 于
阅读全文