Solution Set - 多项式杂题
0. 「OurOJ #46942」/「51nod #1824」染色游戏
首先,显然有
\]
这是一个卷积的形式,但是我们需要求出卷积结果在 \(\bmod 2\) 意义下的值。从这个 \(\binom{t}{i}\) 入手,发现 \(\binom{t}{i}=1\pmod 2\Leftrightarrow i\in t\)(\(i\) 在二进制表示下是 \(t\) 的子集)。也就是说,我们可以直接用子集卷积替代加法卷积,\(\mathcal O(n\log^2n)\) 求出卷积结果。
1. 「CF 662C」Binary Table
Link & Submission.
注意到当行上(列上)的操作全部确定后,列上(行上)每种操作是否进行可以贪心决策。这提示我们枚举一部分,算另一部分。因为有 \(n\ll m\),我们来暴力枚举行上的 \(2^n\) 种操作是否进行,并在每一列分别算出最小 \(1\) 的数量。但这个怎么优化呢?
难以转化的地方在于“算出最小 \(1\) 的数量”,涉及到取 \(\min\),我们干脆直接把表打出来:令 \([x^S]F(x)\) 表示某一列为 \(S\) 时,其仅通过列操作能得到最小 \(1\) 的数量。在这个比较构造性的转化之后,接下来的工作就很简单了——令 \([x^S]G(x)\) 为原表格中长相为 \(S\) 的列的出现次数,那么
\]
其中 \(\times^{\oplus}\) 表示异或卷积。可见 \([x^T]R(x)\) 就是行操作为 \(T\) 时的答案。复杂度 \(\mathcal O(nm+n2^n)\)。
2. 「WC 2018」「洛谷 P4221」州区划分
Link & Submission.
一大坨式子和离奇限制砸脸——哦,原来是状压题。
一个连通块合法的条件为:该连通块的诱导子图不存在欧拉回路,即不连通或者存在奇度点。
状压连通性等一系列处理可以快速求出每个连通块是否合法。记 \(f(S)\) 表示划分好 \(S\) 集合内的点的贡献和,那么
\]
又是子集卷积的形式。注意显然有 \(|T|>1\),所以当引入子集卷积的状态形式 \(f(|S|,S)\) 时,转移仍然没有环。直接 \(\mathcal O(n^22^n)\) 算出来即可。
3. 「THUPC 2019」「洛谷 P5406」找树
Link & Submission.
众所周知位独立的运算,特别是这种有交换律的运算,都能用魔改 FWT 支持其卷积。边 \((u,v)\) 的边权 \(v\) 做正变换得到向量 \(\boldsymbol v\),此时一棵生成树的点权定义为边上向量的点积。点积可以分开算,所以算 \(w\) 次矩阵树可以求到记录所有权值的生成树数量的序列 \(R\) 做正变换后的结果,把 \(R\) 逆变换一下,找到最高非 \(0\) 位即可。
生成树数量很大?随便那一个大素数取模。复杂度是 \(\mathcal O(wn^3)\),但你看这是洛谷 / LOJ 还开了 \(4\text s\) 就放心大胆写了叭。
4. 「JOI 2018 Final」「LOJ #2351」毒蛇越狱
Link & Submission.
一堆堆 \(10^6\) 让人不禁去想单 \(\log\),没想到正解甚至不是 polylog。
自然,我们希望找到某种“前缀和”来加速查询过程,继而想到本质上为高维前缀和的 and 变换和 or 变换。不妨记原序列为 \(f\),and 变换得到序列 \(g\),or 变换得到序列 \(h\)。
但,例如直接用 \(g\) 来查询,问题很大——如果某个 bit 限制为 \(1\),查询结果没有问题;但如果某个 bit 限制为 \(0\),根据 and 卷积的规则,我们会将一些这一 bit 为 \(1\) 的数加入答案。补救一下?我们对 \(0\) bit 的位置做容斥,即枚举哪些 \(0-\)bit 变成了 \(1\),我们确实就能得到答案。
然后就是比较 constructive 的一点:用 \(g\) 查询,容斥 \(0-\)bit;用 \(h\) 查询,容斥 \(1-\)bit;用 \(f\) 查询,枚举 \(?-\)bit,复杂度平衡,得到 \(\mathcal O(L2^L+Q2^{L/3})\) 的算法。
5. 「OurOJ Contest #2562」多项式佛跳墙
现推了一遍,直接放草稿了,牛迭之类的地方跳步比较严重,估计会方便记忆(?)带讲解的版本可以看 这里。板子从零开始不断累计,我交“多项式除法”的那发代码应该算是比较完整的全家桶。
可以发现,最难(步骤最长)的地方是二次剩余。(
u_nv\equiv1\pmod{x^n}\\
u_n^2v^2-2u_nv+1\equiv0\pmod{x^{2n}}\\
v(2u_n-u_n^2v)\equiv1\pmod{x^{2n}}\\
u_{2n}=u_n(2-u_nv)
\]
u=\ln v\\
u'=\frac{v'}{v}\\
u=\int u'\text dx=\int \frac{v'}{v}\text dx
\]
p(u,x)=\ln u-v=0\\
u_{2n}=u_n(1-\ln u_n+v)
\]
p(u,x)=u^2-v=0\\
u_{2n}=\frac{1}{2}(u_n+v/u_n)
\]
i^2\equiv a^2-n\pmod p\\
\text{(lemma)}~~~~i^p\equiv i\cdot (i^2)^{\frac{p-1}{2}}\equiv-i\pmod p\\
\text{(lemma)}~~~~(a+b)^p\equiv a^p+b^p\pmod p\\
(a+i)^{p+1}\equiv a^{p+1}+i^{p+1}\equiv a^2-i^2\equiv n\pmod p\\
\left((a+i)^{\frac{p+1}{2}}\right)^2\equiv n\pmod p
\]
u=pv+r,~\deg r<\deg v\\
f^{\text R}(x):=x^{\deg f}f(x^{-1})\\
u^{\text R}=p^{\text R}v^{\text R}+x^{\deg u-\deg v+1}r^{\text R}\\
u^{\text R}\equiv p^{\text R}v^{\text R}\pmod{x^{\deg u-\deg v+1}}
\]
鬼故事:全部 \(\mathcal O(n\log n)\)。
6. 「OurOJ #5430」yww 与连通块计数
不考虑 \(\gcd\) 中的以及 \(\operatorname{lcm}\) 以外的因子,设数 \(a\) 除 \(\gcd\) 以外的因子构成集合 \(S_a\),那么连通块合法,等价于 \(S\) 之交为 \(\varnothing\),\(S\) 之并为全集。
也就是说,对于每个元素 \(p\),块内都有一个 \(p\in S_1\) 也有一个 \(p\notin S_2\)。
也就是说,存在一对邻接的 \(u,v\),\([p\in S_{a(u)}]\neq[p\in S_{a(v)}]\)。
也就是说,令边 \((u,v)\) 的权 \(w(u,v)=S_{a(u)}\oplus S_{a(v)}\),则连通块合法等价于 \(w\) 之并为全集。
手动模拟 or-卷积,可以做到 \(\mathcal O(n2^m)\),其中 \(m=15\),为 \(50\) 以内素数个数。
7. 「OurOJ #47016」排列问题
灵活转换“计数视角”,“描述过程”而非“拼凑答案”。
令 \(F_i(x)\) 表示把颜色为 \(i\) 的球放入若干不同盒子的 EGF,即
\]
那么,\(G(x)=\prod_i F_i(x)\) 即把所有盒子按颜色区分,放在一起的 EGF。相同盒子内的球必然贡献同色对,不同盒子间可能贡献同色对。所以 \(G(x)\) 亦可以转化为“至少有若干同色对”的 EGF。合并石子 \(\mathcal O(m\log^2m)\) 求出 \(G(x)\),二项式反演卷出答案的 GF 即可。
8. 「JLOI 2016」「洛谷 P3270」成绩比较
Link & Submission.
令 \(\textit{ans}_K\) 表示答案。先钦定 \(K\) 个被碾压的人的标号,然后考虑每种课程,枚举 B 神的得分组合一下,有
\textit{ans}_K &= \binom{N-1}{K}\prod_{i=0}^{M-1}\binom{N-K-1}{R_i-1}\sum_{j}(U_i-j)^{R_i-1}j^{N-R_i}\\
&= \binom{N-1}{K}\prod_{i=0}^{M-1}\binom{N-K-1}{R_i-1}\sum_{k=0}^{R_i-1}\binom{R_i-1}{k}U_i^{R_i-1-k}(-1)^k\sum_{j\le U_i}j^{N-R_i+k}.
\end{aligned}
\]
最后一项自然数幂和可以随意拉插算出来。不过交上去得到了 \(90\) 分的好成绩,猛然发现,被碾压的人一定被碾压,但根据式子,没被碾压的人实际上也可能被碾压。所以还需要对 \(\textit{ans}\) 二项式反演一下。注意和式 \(\sum_{k=0}^{R_i-1}\cdots\) 与 \(K\) 无关,可以先预处理出来。
如果实现得优美,可以做到 \(\mathcal O(MN^2)\)。
Solution Set - 多项式杂题的更多相关文章
- Solution -「树上杂题?」专练
主要是记录思路,不要被刚开始错误方向带偏了 www 「CF1110F」Nearest Leaf 特殊性质:先序遍历即为 \(1 \to n\),可得出:叶子节点编号递增或可在不改变树形态的基础上调整为 ...
- 2019暑期金华集训 Day6 杂题选讲
自闭集训 Day6 杂题选讲 CF round 469 E 发现一个数不可能取两次,因为1,1不如1,2. 发现不可能选一个数的正负,因为1,-1不如1,-2. hihoCoder挑战赛29 D 设\ ...
- Atcoder&CodeForces杂题11.7
Preface 又自己开了场CF/Atcoder杂题,比昨天的稍难,题目也更有趣了 昨晚炉石检验血统果然是非洲人... 希望这是给NOIP2018续点rp吧 A.CF1068C-Colored Roo ...
- 贪心/构造/DP 杂题选做Ⅱ
由于换了台电脑,而我的贪心 & 构造能力依然很拉跨,所以决定再开一个坑( 前传: 贪心/构造/DP 杂题选做 u1s1 我预感还有Ⅲ(欸,这不是我在多项式Ⅱ中说过的原话吗) 24. P5912 ...
- 正睿OI DAY3 杂题选讲
正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 随机化算法,check到答案的概率为\(1/49\) \(n ...
- dp杂题(根据个人进度选更)
----19.7.30 今天又开了一个新专题,dp杂题,我依旧按照之前一样,这一个专题更在一起,根据个人进度选更题目; dp就是动态规划,本人认为,动态规划的核心就是dp状态的设立以及dp转移方程的推 ...
- wangkoala杂题总集(根据个人进度选更)
CQOI2014 数三角形 首先一看题,先容斥一波,求出网格内选三个点所有的情况,也就是C(n*m,3);然后抛出行里三点共线的方案数:C(n,3)*m; 同理就有列中三点共线的方案数:n*C(m,3 ...
- Codeforces 杂题集 2.0
记录一些没有写在其他随笔中的 Codeforces 杂题, 以 Problemset 题号排序 1326D2 - Prefix-Suffix Palindrome (Hard version) ...
- 【Java面试】-- 杂题
杂题 2019-11-03 21:09:37 by冲冲 1.类加载器的双亲委派机制 类加载器:把类通过类加载器加载到JVM中,然后转换成class对象(通过类的全路径来找到这个类). 双亲委派机制 ...
- 贪心/构造/DP 杂题选做Ⅲ
颓!颓!颓!(bushi 前传: 贪心/构造/DP 杂题选做 贪心/构造/DP 杂题选做Ⅱ 51. CF758E Broken Tree 讲个笑话,这道题是 11.3 模拟赛的 T2,模拟赛里那道题的 ...
随机推荐
- 实践出真知,小程序wepy,uni-app框架开发使用!
一.前提 目前我只使用过wepy和uni-app框架开发过小程序,着重比较这两个框架使用感受! 另外wepy框架已经不维护了,希望uni-app好好维护下去! wepy和uni-app都是类似于vue ...
- 全中国有多少公网IP地址?
之前为了准备CTF比赛,搞了一个云服务器,顺便申请了一个公网IP. 看着申请到的IP地址,我突然想到了一个问题:不是早就说IP地址已经耗尽了吗,为什么我随便就能申请到,是谁在负责IP地址的管理分配,咱 ...
- NOIP2024模拟赛7:纯粹当下
NOIP2024模拟赛7:纯粹当下 今日挂分:95pts...... T2 \(T\) 组数据, 每组给定 \(n,k,f,a_i\), 一个序列 \(b\) 满足 \(b_i \in [a_i-k, ...
- .NET 全能高效的 CMS 内容管理系统
前言 推荐一款强大的企业级工具 - SSCMS 内容管理系统. SSCMS 为企业级客户设计,完全开源免费,适用于商业用途且无需支付任何产品或授权费用. 本文将详细介绍 SSCMS 系统的功能.用户界 ...
- Spark Web UI 监控详解
Spark集群环境配置 我们有2个节点,每个节点是一个worker,每个worker上启动一个Executor,其中Driver也跑在master上.每个Executor可使用的核数为2,可用的内存为 ...
- 3.21 Linux PATH环境变量及作用(初学者必读)
在讲解 PATH 环境变量之前,首先介绍一下 which 命令,它用于查找某个命令所在的绝对路径.例如: [root@localhost ~]# which rm /bin/rm [root@loca ...
- gal game 杂谈——前言
gal game 杂谈--前言 大年三十凌晨(早上)打算开始写了吧,作为第一篇先写一些前言好了. 第一次接触gal game还是在B站上看到有人玩<我和她的世界末日>当时觉得挺有意思的,加 ...
- 本机环境virtualbox出现问题重装
vagrant reload 的时候 电脑卡住死机了,然后我重启了以后就没办法启动了,于是重装这个 vagrant 使用 sudo apt-get remove vagrant 然后如果清除不干净 ...
- 盘点Vue3 watch的一些关键时刻能够大显身手的功能
前言 watch这个API大家应该都不陌生,在Vue3版本中给watch增加不少有用的功能,比如deep选项支持传入数字.pause.resume.stop方法.once选项.onCleanup函数. ...
- 序列化-serialVersionUID作用
Serializable接口 作用:标记一个类可以被序列化,如果没有实现该接口,则会抛出异常. ObjectOutputStream中源码: 实验: serialVersionUID 作用:表示一个序 ...