2023.9.19 闲话
环路
给一个单位有向图,求长度小于 \(k\) 的所有环长度之和,对 \(m\) 取模 .
(经过一些过程我发现模合数的特征多项式也是可求的)
我觉得公开这个题的题面应该没有什么问题 .
根据一些经典的讨论,我们要求的无非就是:
其中 \(A\) 是图的邻接矩阵 .
进行一些基础的推导:
其中 \(\lambda_i\) 是 \(A\) 的特征根 .
那么求出 \(A\) 的特征多项式 \(f(z)\) 之后问题变为对于每个 \(k\) 求 \(f(z)\) 的每个根的 \(k\) 次方和 .
这里使用牛顿恒等式:
对于多项式 \(f(z)=\sum\limits_{i=0}^na_iz^i\),记 \(p_k\) 为其所有根的 \(k\) 次方和,则 \(\{p\}\) 满足线性递推:
\[\sum_{i=0}^{\min\{n,k\}}a_{n-i}p_{k-i}=0 \]
证明不难,此处不表 . 那么直接模拟即可求出所有 \(p\),进而可以完成全部任务 .
总结一下,时间复杂度为 \(\Theta(n^3)\),相对于传统算法的优势在于没有 \(\log k\) . 瓶颈在于求特征多项式 .
以下是闲话,倒装闲话?
推歌:The Nights - Avicii .
K8He 语录
K8He:SoyTony 你也不行↑啊
K8He:(我也没打啊)sb
K8He:我是 int_R 学长~
K8He:int_R 见我都得喊我一声学长。
整了半天想要不用整除做回文的 Polyglot (C & Python 3) 代码,结果还是没成,不过还是比较有意思的:
#define print(a) main(){puts(a);} // jpa gninraw#
#define is void func() // jpa gninraw#
#define type(x) {} // jpa gninraw#
#warning apj # )1 //
print("Hello, world!") is type(1#) // jpa gninraw#
#warning apj // )#1(epyt si )"!dlrow ,olleH"(tnirp
// 1) # jpa gninraw#
#warning apj // }{ )x(epyt enifed#
#warning apj // )(cnuf diov si enifed#
#warning apj // };)a(stup{)(niam )a(tnirp enifed#
#define print(a) main(){puts(a);} // jpa gninraw#
#define is void func() // jpa gninraw#
#define type(x) {} // jpa gninraw#
#warning apj # )1 //
print("Hello, world!") is type(1#) // jpa gninraw#
#warning apj // )#1(epyt si )"!dlrow ,olleH"(tnirp
// 1) # jpa gninraw#
#warning apj // }{ )x(epyt enifed#
#warning apj // )(cnuf diov si enifed#
#warning apj // };)a(stup{)(niam )a(tnirp enifed#
甚至让我感觉 C / C++ & LaTeX 的 Polyglot 有成功的可能。。
发现 2023.6.14 闲话有熟知的证法:
反演上式即可 .
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/17715375.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ