XN2025 集训记录 D5
XN2025 集训记录 D5
今天是数学啊 , 主要内容是数论 , 正好自己对这一块不太熟悉 , 正好边做题边写博客 , 把学到的东西记录一下 , 方便以后复习 .
factor 指令
直接在 bash 里面输入 factor [NUM] 就可以获取质因数分解 , 非常方便 .
看网上说接受值域在 \(2^{128}\) , 对于OI绰绰有余了 .
Exgcd
虽然费马小定理很方便 , 但是 Exgcd 可以处理更多不保证模数是质数的情况 , 也是 CRT 等的前置 .
思想其实比较简单 , 考虑先将不定方程用 gcd 的思路扩展一步
根据递归求解的思想 , 可以先求出关于后半部分的一个解 :
考虑用 \(x',y'\) 求解 \(x,y\) , 通过拆 \(\bmod\) 为除法 , 简单代换可以得出 :
其实也没那么难 , 但是确实不太熟悉就是了 .
ExCRT
CRT 是废物啊 , 只能处理素数不说 , 还要单独推结论 , 也没更好写到哪里去 . 不如更直接的 ExCRT .
其实这东西就是一个同余方程合并的办法 .
对于两个方程进行改写 :
即解
Exgcd 解即可 , 新的模数是 \(\mathrm{lcm} (m_1,m_2)\) .
卢卡斯定理
这个不是飞舞了 , 比扩展版好写多了 .
适用于 \(p\) 较小的情况 , 比较好记好写 , 不过仅限组合数可用 , 使用比较受限 .
扩展卢卡斯定理
属于是卢卡斯定理的真身 , 真正的位置在 oi-wiki 的 阶乘取模 - OI Wiki 这里 .
考虑 \(n,m\) 较大时 , 会存在 \(\frac{n!}{m!(n-m)!}\) 分数线上下同时存在 \(p\) 但是约掉了 , 为了处理这种情况 ( 同时得到一个易于处理的结构 ) , 进行变形 :
其中 \(v_p(n!)\) 表示 \(n!\) 质因数分解后有多少个 \(p\) , 而 \((n!)_p\) 表示 \(n!\) 只保留 \(\ne p\) 的质因子时的值 . 这个变化相当于把 \(n!\) 中的所有 \(p\) 拆了出来 .
考虑对 \(v_p(n!)\) (幂次) 和 \((n!)_p\) (阶乘余数) 分别求解 .
求解阶乘余数
前置知识 : Wilson 定理
$ (p-1)!\equiv-1 \pmod p $ 当且仅当 \(p\) 为质数
Wilson 定理扩展形式
\(\prod\limits_{1\le i\le m-1 , i\perp m} i\equiv(\pm1) \pmod m\)
其中当且仅当 \(m\) 存在原根时 , 即 \(m=2,4,p^{\alpha},2p^\alpha\) 时取 \(-1\) ( \(p\) 为奇质数 ).
考虑把 \((n!)_p\) 按 \(p\) 长度分段 , 则
在 \(p\) 为质数情况下 , 根据 Wilson 定理 , 可以得到最终形式 :
通过预处理 \(n!(n<p)\) , 可以递归求解 , 复杂度 \(O(\log_pn)\) .
而 \(p^\alpha\) 是质数幂情况下 , 根据扩展形式 , 类似地 :
其中当且仅当 \(p=2\) 且 \(\alpha>3\) 时取 \(1\) .
通过类似于预处理 \(n!\) 来预处理 \(g(n)\) . 类似地递归求解 .
而如果 \(p\) 不是质数幂 , 则通过质因数分解拆成若干质数幂 , 分别求解 , 最后 exCRT 合并即可 .
求解幂次
while(n){
n/=p;
res+=n;
}
一目了然 .
在求出 \((n!)_p\) 与 \(v_p(n!)\) 后 , 可以把 \((n!)_p\) 正常求逆元 ( 可能需要exgcd ) 合并 , 然后考虑 \(v_p(n!)\) , 通过指数加减处理 .
其实只有在上下 \(v_p\) 和相等时才有非 \(0\) 答案 , 否则必然 \(=0\) 或不存在逆元 ( 这种情况一般不出现 ) .
优势在于不仅可以处理模数非质数的情况 , 还可以用来处理形式与组合数相似但是不完全相同的情况 .
数论函数卷积结论
唉感觉这里想吹水都不知道说些什么好了 , 没啥新鲜的东西 , 数学题单又搞得头昏脑胀 . 好难受啊 .
感觉自己的状态可以用一种动能来描述 , 刚刚开始的时候动能充足 , 加上正反馈 , 感觉自己的状态很好 ; 但是逐渐感觉倒也不是想要放弃或者说不认真做了 , 但是正反馈不足了 , 拼劲也不持久 , 处于一个不上不下的状态 .
明天还是模拟赛啊 , 也不希望啥 , 就是最好能打的爽一些 , 不要搞不给样例这种让人一上来就很想摆烂的场了 .
突然好想打架子鼓 ( 无端 ) .
P10594 最大团
题意说的很不清楚 , 其实组合数学的部分比较简单 , 最后就化成 :
要求的就是
\(p-1\) 可以拆成四个质数 \(2,13,5281,7283\) ( 这就是 factor , 听 bash 说 ) , 分别对这四个素数用扩展卢卡斯的套路来一遍 , 然后 ExCRT 合并就行了 ( 没错 , 上面一堆科技就是为了这个题学的 ) .
P5572 简单的数论题
科技只到用了莫反和整除分块的"简单题"
推式子可以看题解 , 自己推的东西前一半和题解一样, 后一半是看着题解推得 ( .这里只说思路 .
首先 \(\varphi\) 里面的东西可以把 \(lcm\) 消掉 , 然后一下就可以通过积性函数分拆 ( 所以这题并不依赖 \(\varphi\) 的性质 , 任意一个容易求值的积性函数应该都行 ) .
然后是比较典的交换求和顺序 , 把 \(\gcd\) 提出来 , 用 \(\frac {i}{\gcd}\) 这种东西代换 (很套路 ) , 然后把 \(\gcd\) 枚举提前 , 目的是把带 \(i,j\) 的东西搞到一起 , 整出比较同构的形式 , 以及把 \([\gcd(i,j)=1]\) 这种东西拎出来做莫反 .
拿出莫反之后 , 仍然套路地把 \(\gcd\) 提前 , 发现这个形式已经有点像是要数论分块了 , 不过带着的 \(\varphi (ki)\) 这种东西很难受 , 而且不好继续消下去了 , 考虑预处理 , 设
由于我们要的是 $ G(\frac{n}{dk},k)$ 这种形式 , 所以函数取值是 调和级数的 \(O(n\log n)\) . 可以放心地预处理 .
不过到这里之后还是不好分块 , 现在的式子是这样的形式 ( 前面的自己会推的忽略了 , 后面这里比较深刻看题解会的记录一下 ) .
考虑预处理后面的部分
这个形式比较不好处理 , 为了求 \(F(n,m)\) 还需要一层整除分块 , 那有没有别的方式能让预处理更高效一些呢 ?
答案是有的 . 枚举 \(k\) , 会使得 \(G\) 的两个自变量都与 \(k\) 有关 , 显然大大增加了内层复杂度 , 那么我们还有可以整除分块的对象 : \(dk\) , 设 \(dk=T\) , 原式可化为
那么预处理 :
这个形式好看了很多 . 至少可以通过在 \(n,m\) 相同的状态中调和级数转移预处理了 . 不过显然仍然无法预处理所有 \(n,m,T\) , 考虑值域分治 , \(n,m\) 在实际使用时又带入 \(\frac{n}{T}\) , 因此更多有效状态集中在 \(n,m\) 较小的部分 , 尝试处理 \(n,m\le B\) 的部分 , 注意到若钦定 \(m\ge n\) , 对于确定的 \(m\) , \(T\) 值域为 \(\frac{N}{m}\) , \(n\) 值域为 \(m\) , 所以总状态数为 \(O(NB)\) .
预处理可以用调和级数暴力做 .
考虑查询时 , 若 \(T<\frac{n}{B}\) , 只能暴力做 , 考虑用调和级数 , 复杂度 \(O(\sqrt N\log N)\) .
其余部分对 \(F(m,n,T)\) 在 \(T\) 维度做分前缀和 , 整除分块一些 , 复杂度 \(O(\sqrt N)\) .
这道题处理不断运用了交换求和 , 目的一直是获得更简洁的形式 , 直到没有化简空间 , 开始考虑预处理 , 并且再次以预处理为目的进行变化 .
ARC154E
首先考虑用前缀和地思路把每个点地贡献化成
然后还能进一步整理
然后神奇地发现每个 \(P_i\) 的贡献是独立的 !
当下只需对每个 \(P_i\) 求出其期望位置即可 , 考虑一个覆盖了 \(i\) 位置的翻转 \([l,r]\) , 会使 \(i\) 到达哪里
更神奇了 , 也就是只要 \(i\) 被覆盖过一次期望位置就是 \(\frac{n}{2}\) , 只需计算被覆盖的概率 , 分别计算原 \(P_i\) 在 \(i\) 和 \(\frac{n}{2}\) 的贡献 , 最后用期望还原求和即可 .
非常有趣 , 看起来很费劲的东西推出来都是比较简单的结构 .
结果就是现在还有 20 分钟结束 , 但是我博客写完了 , 这 . . . 写题也不够了 , 坐牢了 .
唉还是模拟赛好 , 就爽做 , 拿点分是点 , 反正又不用纠结自己有没有啥收获 , 反正我一套模拟赛下去了我这一天不算摆烂 .
其实这种感觉在学算法时会更明显 , 比如今天学了个卢卡斯 , 总感觉一天任务量已经完事了 () . 不过事实证明学算法的实际效果比感觉上的效果差很多 , 还是要实践堆起来才是真正学懂 . 相比之下模拟赛还真就能撑起一天的内容 , 反正这个考场状态练到了 , 题解该看的看了 , 总结也写了 , 大比例的实践感觉上虽然好像也没会那么多东西 , 反正心态上就当自己学明白了 .
🧊 you're the love that i take ~ 🧊
🧊 you're the drug that i take ~ 🧊
🧊 will you cage me ↑ will you cage me ↑ 🧊
🧊 you're the pause in my veins ~ 🧊
🧊 you're the war that i wage ~ 🧊
🧊 can you change me↑ can you change me↑ 🧊
🧊 FROM THE MONSTER YOU MADE ME 🧊
🧊 FROM THE MONSTER YOU MADE ME ! ! ! ! 🧊

浙公网安备 33010602011771号