「考试」省选50

好可恶卡常卡死我了。

T1
我们点分治。
对于每一个位置按照到点分中心的所有子树节点划分不同路径。
二分答案(最小的使得大于其的路径个数为K的长度)。
只需要给点分数据排序。
双指针扫一扫再加一个求有多少个大于等于当前二分长度的路径。
输出答案即可。

T2
维护一个线段树。
维护区间与缀和,或缀和。
考虑判断当前区间\(and\ or\)某一个数之后,其变化的位是否均相同。
如果相同打标记下传,否则向下递归。
查询直接查询区间最大值即可。

T3
比较有意思。
我们求得一个质数使得:

\[P\equiv 1\ (mod\ K) \]

这样\(K|phi\)
所以这样的一个质数\(P\)是存在\(K\)次单位根了。
设其\(K\)次单位根为\(g\)
那么有:

\[g^K\equiv 1\ (mod\ P) \]

对于每一个\((i,j)\)随机出来一个\(rd_{i,j}\)
那么给每一个位置设一个权值\(w_{i,j}=rd_{i,j}x^{a_{i,j}}\)
当然如果这个位置没有利是,权值自然为0.
这样我们每次代入一个\(x=g^i\)求行列式。
对于\(i\in[0,K)\)我们求\(K\)次行列式,把值累加。
那么对于一个合法排列(不含有\(a_{i,j}=-1\))\(p\)来说,设\(\sigma(p)\)为其逆序对个数。
其对最终和的贡献即为:

\[W=(\sum\limits_{j=0}^{K-1}g^{j\sum\limits_{i=1}^{n}a_{i,p_i}})(-1)^{\sigma(p)}\prod\limits_{i=1}^{n}rd_{i,p_i} \]

设:\(S=\sum\limits_{i=1}^{n}a_{i,p_i}\)
那么当\(S\equiv 0\ (mod\ K)\)的时候。
我们的\(g^S\equiv 1\ (mod\ P)\)
前面那部分,如果我们的\(S\equiv 0\ (mod\ K)\)的话,值必然为\(K\)
否则我们用等比数列求和公式:

\[\frac{g^{KS}-1}{g^{S}-1} \]

这样必然为0。
然而如果求和为0的话,很大概率是不存在解。
如果求和不为0的话,必然存在一个解。

(题解锅的太厉害了吧。。。

posted @ 2020-03-20 21:38  Lrefrain  阅读(102)  评论(0编辑  收藏  举报