点分治+枚举一个数二进制的子集(和2018CCPC秦皇岛枚举子集一样)
题意
给一颗点染色树,问有多少对 $(u,v)$,使得在此路径上的种类数有 $k$ 个。
分析
- 显然点分治题
- 重点在于统计数量的复杂度。
二进制枚举一个数的子集
1
for(int j=i; j; j=(i-1)&i)
但 $vector$ 初始化一直 $RE$,调了十年(毒瘤UVALive)
代码
1 |
|
Success and failure are temporary.
点分治+枚举一个数二进制的子集(和2018CCPC秦皇岛枚举子集一样)
给一颗点染色树,问有多少对 $(u,v)$,使得在此路径上的种类数有 $k$ 个。
二进制枚举一个数的子集
1 | for(int j=i; j; j=(i-1)&i) |
但 $vector$ 初始化一直 $RE$,调了十年(毒瘤UVALive)
1 | #include<stdio.h> |