摘要:
题目 "点这里" 看题目。 分析 设$count(x)$为$x$的二进制中$1$的个数。因此$f(u,v)=count(u\oplus v)$ 看一看每次转移,我们发现最不友好的东西就是$f(u,v)$,因此我们得想办法把它从我们的计算中丢掉。 发现对于$[0,n)$中的所有数,两两异或之后不会超过 阅读全文
摘要:
题目 "点这里" 看题目。 分析 不难想到这样的 DP : $f(u,j)$:以$u$为根的连通块中异或值$j$的子树的个数。 转移类似于背包,设已经合并到$u$上的信息为$g$,得到: $$f(u,j)=\sum_{(u,v)\in E}\sum_{i\oplus k=j}g(i)f(v,k)$$ 阅读全文
摘要:
题目 "点这里" 看题目。 BZOJ 上面是权限题目。 分析 第 K 小的问题无非两种方法——构造法或者二分法。 很显然如果构造的话在这里不太好处理,因此我们可以对于每一个点$u$,二分一下这个第 K 小路的长度。 检查的方法很简单,也就是计算一下从$u$出发的路径中,是否有 K 条以上的路径的长度 阅读全文
摘要:
题目 点这里看题目。 分析 我们不妨来考虑一下生成的序列有什么性质。 为了方便表示,我们将序列$S$的第$i$项写为$S[i]$。 首先考虑如果所有的$A$序列都是递增的,那么我们得到的序列肯定是递增的。如果存在递减的情况,例如其中某个序列$B\in{A_1,A_2,\dots,A_n}$,存在$B 阅读全文
摘要:
题目 "点这里" 看题目。 分析 关于树上路径的统计问题,我们不难想到用点分治。而这道题存在修改,因此我们用 " 动态点分治 "。 考虑正常的点分治,我们在每一层点分治中求的是经过当前点的最大关灯点距离。我们先求出本层中所有关灯点到自己的距离,并取其中 来自不同子树 的最大值和次大值,相加得到本层的 阅读全文
摘要:
题目 "点这里" 看题目。 BZOJ 目测......是炸了。 分析 动态点分治入门题。 首先理解什么叫 " 动态点分治 "。 一般点分治需要离线解决,不带修改。动态点分治可以用点分治的方法在线解决问题,支持修改。 在点分治的过程中,每个点都会成为一次分治中心进行计算。如果我们将点按照计算顺序连成一 阅读全文
摘要:
题目 "点这里" 看题目。 BZOJ 上这还是权限题。 分析 不难发现,最后我们走过的点一定组成了树上的一个连通块。 如何枚举树上一个连通块?我们可以想到用点分治。由于每一次我们进行分治之后会进行子树继续分治,这就相当于将原图变成了几个连通块。我们只需要对于每次分治,将分治中心设定为 “ 必选 ” 阅读全文
摘要:
题目 点这里看题目。 分析 是挺奇怪的...... 以下定义质数集合为$P$,$p_i$为第$i$个质数。 定义$mp(x)$为$x$的最小质因子,则可以得到: \(sgcd(a,b)=\frac{\gcd(a,b)}{mp(\gcd(a,b))}\) 这个比较显然。然后可以娴熟地变换式子得到: \ 阅读全文
摘要:
题目 设$a,b$分别为$1\sim n$的排列。 求有多少个排列对$(a,b)$满足$\sum_{i=1}^n\max\{a_i,b_i\}\ge m$。 两个排列对$(a,b)$和$(c,d)$不同当且仅当存在一个$i$,使得$a_i\not=c_i$或者$b_i\not=d_i$。 数据范围为 阅读全文
摘要:
题目 点这里看题目。 分析 我们先放宽条件,重新定义五元组$(a,b,c,d,e)$如下: 1.$1\le a,b,c,d,e\le n$。 2.\(s_a\&s_b=0\)。 并且设$v(a,b,c,d,e)=(s_a|s_b)&s_c&(s_d\oplus s_e)\(。(这里的\)\oplus 阅读全文