首页 > 其他分享 >闲话 22.10.25

闲话 22.10.25

时间:2022-10-25 21:26:12浏览次数:81  
标签:25 frac log 闲话 nB FFT 22.10 多项式 复杂度

闲话

今天又抱泠了(

文件:sandalphon*.in/out; lambentlight*.in/out; excalibur*.in/out
soytony:这种nb文件名直接敲错
我:这文件名显然是打不错的(

然后T2光荣地打成了lambertlight调了半个小时发现没有读入
回去一定要再看一遍刀剑

好耶生活水平大幅度提升

显摆显摆

image


だけど気付くだろう

豆色の空も

悪くはないななんて言うだろう

そんなものなのさ

この広い空ですら

关于多项式?

启发式合并多项式

考虑一类形如

\[f_{i,j} = \sum_{k=0}^j f_{i-1,j-k} g_k \]

的 dp 式子。我们需要求 \(f_{n,k}\),其中 \(1\le k\le n\le 10^5\)。

比较平凡地构造 \(F_i(x) = \sum_{j=1}^{\infty} f_{i,j},G(x) = \sum_{i=1}^{\infty} g_i\),于是在 dp 式两端关于 \(j\) 求和能得到 \(F_i(x) = F_{i-1}(x) * G(x)\)。

这个玩意可以直接多项式快速幂求 \([x^k](G(x))^n\) 得到。复杂度比较常识。

推广就得到了

\[f_{i,j} = \sum_{k=0}^j f_{i-1,j-k} g_{i-1,k} \]

然后对 \(G(x)\) 也整个下标就行了。一般而言 \(g\) 有意义的取值只有 \(O(n)\) 个,因此可以直接把 \(G_i(x)\) 乘起来,每次选两个度数最小的。启发式的复杂度不会证,当有 \(O(\sqrt n)\) 个多项式时似乎 \(O(n\log^2n)\) 的复杂度显然。其他情况不会证。没准证明能写社论(

这段其实是炒冷饭。具体看社论1009.

分治 FFT

考虑优化一下这个东西的复杂度。我们从压位 trie 那里得到灵感,试着将 FFT 的分治树拓展叉数。

考虑 \(B\) 叉的 FFT。

普通 FFT 需要让每个子树的值对后面的所有子树作贡献,因此我们需要对每个叉做 \(O(B)\) 次多项式乘法,每次是 \(\frac nB \log \frac nB\) 的复杂度,因此在每个点有 \(O(Bn\log \frac nB)\)。
递归式列出是

\[T(n) = B\times T(\frac nB) + O(Bn\log \frac nB) \]

得到 \(B=2\) 时最优。

你玩我呢??!
先冷静,我们接着考虑。

我们真的需要对每两个子树算一次贡献吗?答案是不用。
我们可以直接把每个子树的多项式用点值方式存储,对于一个子树前面的各子树的贡献可以先存起来,最后用一次 FFT 转换就行了。由于两两贡献,我们需要统计每两个子树间的乘积,因此这部分是 \(O(B^2 \frac nB)\) 的。对于 \(G\) 的部分可以提前算出来,我们只需要做 \(O(B)\) 次多项式乘法。
总的来说需要 \(O(B\frac nB\log \frac nB + B^2 \frac nB) = O(nB + n\log \frac nB)\)

递归式列出是

\[T(n) = B\times T(\frac nB) + O(nB + n\log \frac nB) \]

得到 \(B=\log n\) 时最优,是 \(O(\frac {n \log n}{\log \log n})\) 的。

这个好(

skip2004说可以使用指令集科技,然后跑 4e6 的 exp 只需要 1.5s
我只想贺这份板子(

[实现先不放,我分治FFT没调出来]

标签:25,frac,log,闲话,nB,FFT,22.10,多项式,复杂度
From: https://www.cnblogs.com/joke3579/p/chitchat221025.html

相关文章

  • PAT 乙级 1045 快速排序 (25分)
    1045快速排序(25分)著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边......
  • 【闲话】2022.10.25
    今天又是考试乐死出题人吸取了昨日教训把U,V分别换成了zuotiannihackwo,jintiannihailai乐死,他急了他急了赛后,Eafoo:#definejintianwohailaijintiannihailai双倍乐......
  • PAT 乙级 1040 有几个PAT (25分)
    1040有几个PAT(25分)字符串APPAPT中包含了两个单词PAT,其中第一个PAT是第2位§,第4位(A),第6位(T);第二个PAT是第3位§,第4位(A),第6位(T)。现给定字符串,问......
  • 【2022.10.25】Vue基础学习(2)
    今日详情1.style和class2.条件渲染3.列表渲染3.1v-for循环数组,循环字符串,数字,对象3.2数组的检测与更新4.双向数据绑定5.事件处理5.1过滤案例5.2事件修饰......
  • 【2022-10-25】前端Vue框架(二)
    一、Style和class数据绑定语法:属性名=js变量/js语法:class=’js变量、字符串、js数组’class:三目运算符、数组、对象{red:true}:style=’js变量、字符串、js数......
  • 1025模拟赛(兔子场)
    1025模拟赛(兔子场)感谢兔子女王&兔子公主不杀之恩。A「AGC008C」TetrominoTiling题意\(~~~~\)七种俄罗斯方块,已知每种的数量,(按照形状记为\(\text{I,O,T,L,J,S,Z......
  • 20221024&20221025 图数据库/知识图谱/AI/Neo4j入门
    起源/Outline图数据库GraphDB在计算机科学中,图数据库(英语:graphdatabase,GDB[1])是一个使用图结构进行语义查询的数据库,它使用节点、边和属性来表示和存储数据。该系统......
  • leetcode-258-easy
    AddDigitsGivenanintegernum,repeatedlyaddallitsdigitsuntiltheresulthasonlyonedigit,andreturnit.Example1:Input:num=38Output:2Expla......
  • P2597 [ZJOI2012]灾难
    #include<iostream>#include<vector>#include<cmath>#include<queue>#include<algorithm>#include<cstring>constintN=65534+1;usingnamespacestd;i......
  • HDU 2546 饭卡
    题目链接:​​传送门​​题面:ProblemDescription电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一......