标签:有一个 rac 插入 线性 rand time 位置 向量 所有权
先将所有权值\(\text {Rand}\)区间\([0,K)\)的一个权值,那么一个方案满足条件就变成了\([0,K)\)中的颜色都有,只要满足要求的那\(K\)个颜色被分到不同的集合即满足条件,那么正确率\(P=\frac {K!}{K^K}\)
没有第二问就是一个斯坦纳树板子题,然后考虑怎么做那个最小限制怎么做。
考虑二分一个\(mid\),把所有\(\leq mid\)的权值分一个\(1000\),\(>mid\)的权值分一个\(1001\),那么我们再跑斯坦纳树的时候就相当于在满足联通块个数最小的情况下按照最小大于\(mid\)的权值的个数排个序,然后你多\(\text{Rand}\)几次(\(233\)左右)跑一下就可以\(\text{check}\)了。
首先你有一个想法,就是每个数质因子的奇偶性将所有数变成一个二进制数然后丢到线性基里,设数集为\(S\),线性基中的数的集合为\(T\),那么答案就是\(2^{|S|-|T|}\),因为此时\(\complement_S T\)中的数的异或和一定可以和\(T\)中的数异或然后构成一组解,且线性基内的数互相异或无法形成\(0\)。
考虑怎么优化这个东西,事实上我们只需要处理出\([L,R]\)中所有数\(\leq \sqrt R\)的质因数,因为\(> \sqrt R\)的质因数只有\(1\)个,特殊处理一下即可,处理方法:"假设"在次质因子的位置存在一个基底,那么第一次插入时一定会成功,此后插入需要异或这个基底然后可以转化为\(\leq \sqrt R\)的线性基中的插入。因为\(\sqrt {10^7}\)内的质数大约\(550\)个,\(\text{bitset}\)优化一下所以一次插入是\(O(\frac {550\times 550}{64})\)的。
然后如果\(R-L\geq 7000\)时如果质数在\([L,R]\)中存在就肯定插入成功,不用线性基直接算就好了。
否则就按照上面的方法做就行了,复杂度就有保证了。
实现细节详见代码。
考虑费用流,每个桌子是一个环直接费用流连边就行了。
又因为\(m\)不是很大且每次所连的是段区间,所以可以对于每个桌子的同一位置建一颗线段树,然后线段树优化连边即可,需要用zkw费用流。
每个区间维护一个行向量\([A,B,C,len]\)分别表示\(A\)的和、\(B\)的和、\(C\)的和及区间长度,每次操作相当于区间乘上一个矩阵,每次把矩阵弄出来然后下传标记就好了。
待填
待填
标签:有一个 rac 插入 线性 rand time 位置 向量 所有权
原文地址:https://www.cnblogs.com/heyujun/p/12000515.html