最近发现的一些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}\) 选择的情况。

\[f_{i,j}\times {2^n-a_{i-1}-j \choose 2^k-1}\times k!\rightarrow f_{i-1,j|2^k}[j\&2^k=0] \]

\[ans=2^n\times \sum_S(-1)^{|S|}(2^n-1-S)!\times f_{1,S} \]

小 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\)

\[ans=a_1+2b_1x+c_1x^2+a_2+2b_2(v-x)+c_2(v-x)^2 \]

\[ans=a_1+a_2+2b_2v+c_2v^2+(2b_1-2b_2-2vc_2)x+(c_1+c_2)x^2 \]

根据初中数学知识,\(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\)

\[f_0=0,f_1=1 \]

\[f_i=i!-\sum_{j=1}^{i-1}f_j\times {i-1\choose j-1}\times (i-j)! \]

\[f_i=i!-(i-1)!\times \sum_{j=1}^{i-1}\frac{f_j}{(j-1)!} \]

然后我就直接分治 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,码码码就行了。

posted @ 2020-01-31 22:21  Owen_codeisking  阅读(529)  评论(0编辑  收藏  举报