最近发现的一些trick(naive) & 学车膜你赛题解
最近发现的一些trick(naive) & 学车膜你赛题解
大鸽子更博了!
ARC093F Dark Horse
有 \(2^n\) 个人,每次相邻比试,比试到只剩一人。\(x<y\) 时 \(x\) 获胜。\(1\) 选手想获胜,但它会输给其中 \(m\) 个选手。求初始序列的方案数。
\(n,m\le 16\)
一道状压 \(dp\) + 容斥原理的好题。
(居然是自己想出来的)
\(f_{i,j}\) 表示给定选手 \(i\sim m\) 决定是否强制为集合的最小值时,集合大小 \(2^0,2^1,...,2^{n-1}\) 选择的情况。
小 trick: 计数中对组合意义的转化
有些题目在模很小的质数,如 \(2\) 时,挖掘特殊性质
给定一个无向连通图 \(G\),问其诱导子图连通的方案数,对 \(2\) 取模。
\(n\le 50,1\le |a-b|\le 12\)
注意到一个图,有 \(k\) 个连通块,那么它黑白染色的方案数为 \(2^k\)。
我们先求子图黑白染色的方案数,因为连通块 \(\ge 2\) 时须忽略,故对 \(4\) 取模除二即为答案。
状态就很简单了:黑色,白色,不选。时间 \(O(n3^{12})\)。其实 \(n^23^{12}\) 也跑得过去。。。
对于 \(\prod_{i=1}^k a_i\) 时组合意义的转化
相当于在 \(k\) 个集合中,每个集合大小为 \(a_i\),各选一个的方案数。
比如 神佬来切切吧
\(\text{WC2019}\) 数树更是结合了 \(\text{prufer}\) 序列的推论:\(k\) 个连通块,\(\sum_{i=1}^{k}a_i=n\),方案数为 \(n^{k-2}\prod_{i=1}^{k}a_i\)。
真是一道不可多得的好题!
突然发现学车送了三套题,质量还可以。其中一套没 latex 所以没做。
prime
min25 筛模板,随便做。
tree
这么好的题目居然没人做 QAQ
求 \(\sum_{y\in S}dis(x,y)\),先建个虚树,在虚树上换根 dp,处理出每个点子树和子树反树的 \(\sum dis^2,\sum dis,\sum 1\),这样就可以合并了。
因为 \(z>0\),所以答案点一定在虚树一条链上。我们设 \((a,b,c)_{1,2}\) 分别为子树和子树反树的 \(\sum dis^2,\sum dis,\sum 1\)。
根据初中数学知识,\(x\) 越接近 \(-\frac {b}{2a}\) 二次函数越小,这样的话我们倍增上去,找到一个点,恰好使得 \(dis_{x\rightarrow z}\le \Large\frac {vc_2+b_2-b_1}{c_1+c_2}\),这样计算一下 \(z\) 和 \(fa_z\) 的答案就行了。
另外就是,倍增上去的时候,若 \(-\frac {b}{2a}\) 下取整 \(=0\) 也是在范围内的。因为有可能是 \(-\frac {b}{2a}=0.80\),答案在 \(fa_x\)。若不在 \([0,v)\) 的范围内,最小的答案肯定在虚树上的点。
时间 \(O(\sum k\log n)\),我认为这是道好题。
triangle
我们把所有点和直线的交点拿去离散化,跑扫描线。这样区域就变成了一些梯形和三角形,且过一个区域的直线不相交。因为若相交,扫描线时会分成两个区域。
这样子你把直线拿去离散化,有两条直线的话相当于在上面区间加,单点查。若一块区域被覆盖 \(k\) 次,它的贡献为 \(S\times (2^k-1)\times 2^{n-k}\)。时间 \(O(n^3\log n)\)。
inv
md,随机居然是这么用的,233
类似 k-d tree 查询最近/远点对,复杂度大概是 \(O(n\sqrt{a}\log n)\)。
perm
一眼秒了,只是没看出有更简单的做法。
\(f_i\) 是 \(i\) 个点正好连成大小为 \(i\) 的环的方案数。长度在集合之内就是把一些数设成 \(0\),不用管它。答案为 \(ans_t=t!\times [x^t]e^f\)。
然后我就直接分治 FFT 了。。。
一看别人写的,cnm,这么简单。。。有一个结论:\(f_i=(i-1)!\)。用数学归纳法容易得出。
接下来就是多项式 exp 的事了,时间 \(O(n\log n)\)。
dlds
码农题。。。估计考场上我如果能写出这题就 rp 爆表了。。。
想都不想,直接树套树,动态开点线段树套 fhq treap,封装一下。虽然这题不仅卡时间还卡空间,不过 12s 即使操作 5 时间 \(O(\log^3 n)\) 其他操作时间 \(O(\log^2 n)\) 都能过吧。。。快速访问用个 deque,码码码就行了。