首页 > 其他分享 >上辈子推的"分治 NTT"复杂度分析

上辈子推的"分治 NTT"复杂度分析

时间:2024-01-29 17:34:05浏览次数:27  
标签:log 多项式 复杂度 分治 NTT 上辈子 id

hdu7381 Cargo

式子部分由 liuhangxin 想出。

\[\sum\limits_{i = 0}^{n}\binom{k}{i}(n - i)^{k - i}[x^i]\prod\limits_{id = 1}^{m}(1 - x^{c_{id}}) \]

实现部分当时胡了一个分治 NTT,也不知道时间复杂度为什么是对的,但是过了。

AC 后十多分钟分析出来这个做法的时间复杂度为 \(O(n\log{m}\log{n})\)。

考虑两个长为 \(w_1\) 和 \(w_2\) 的多项式自叶向根合并,本层运算消耗时间 \(O(w_1\log{w_1} + w_2\log{w_2})\)。

合并到上一层,得到长为 \(w_1 + w_2\) 的多项式,这个多项式在它那一层的运算消耗时间 \(O((w_1 + w_2)\log({w_1 + w_2}))\)。

把 \(\log{x}\) 放大成 \(\log{n}\),\((w_1 + w_2)\log{n}\) 可以拆成 $w_1\log{n} + w_2\log{n} $。

对 \(w_i\log{n}\) 进行统计,由于采用分治,向上最多被计入 \(\log{m}\) 次,又因为 \(\sum{w} = n\),故总时间复杂度为 \(O(n\log{n}\log{n})\)。

标签:log,多项式,复杂度,分治,NTT,上辈子,id
From: https://www.cnblogs.com/Schucking-Sattin/p/17994966

相关文章

  • audio currentTime 设置后,重置成0,解决方案(流文件-下载文件)
    audiocurrentTime设置后,重置成0,解决方案第一步-流文件-下载文件:先查看你的mp3文件是流文件,还是下载文件。检测方式,就是放到浏览器回车。在线播放就是流文件,直接下载了,就是下载文件。是需要流文件,才可以拖拽进度条。第二步:currentTimeseekTo方法针对不同浏览器,做下兼容......
  • 如何降低微服务复杂度丨云栖大会微服务主题分享实录
    作者:谢吉宝本文整理自阿里云资深技术专家、中间件负责人谢吉宝在2023云栖大会《极简微服务模式,降低微服务复杂度的最佳实践》的分享2023云栖大会现场当面临复杂的挑战时,"分而治之"的方法往往能取得显著的效果。微服务架构在这方面的贡献尤为突出,它不仅为"分"与"治"这两个环节提供......
  • js DocumentType类型
    DocumentType类型DocumentType类型的节点包含文档的文档类型(doctype)信息,具有以下特征:nodeType等于10;nodeName值为文档类型的名称;nodeValue值为null;parentNode值为Document对象;不支持子节点。DocumentType对象在DOMLevel1中不支持动态创建,只能在解......
  • FFT及NTT复习
    FFTFFT和NTT是循环卷积,如果数组开小了,高位的值会加到低位上去DFT\[f(x)=a_0+a_1x+a_2x^2+a_3x^3+a_4x^4+a_5x^5+a_6x^6+a_7x^7\\f(x)=(a_0+a_2x^2+a_4x^4+a_6x^6)+x(a_1+a_3x^2+a_5x^4+a_7x^6)\\f(x)=G(x^2)+xH(x^2)\\\\f(\omega_n^k)=G(\omega_{\frac{n}{2}}^k)+\omega_......
  • 关于复杂度的习题(消失的数字)
    1.0计算斐波那契数列递归fib的空间复杂度//计算斐波那契数列递归fib的空间复杂度longlongFib(size_tN){if(N<3)return1;returnFib(N-1)+Fib(N-2);}注:空间是可以重复利用的,不累计的;但是时间是一去不复返,累计的。递归调用分析:正是因为空间复杂度可以重复利用,所以......
  • Cognex 的 CogFitCircle 和 CogNPointToNPoint 类的简单测试
    privatevoidbtn_Test_Click(objectsender,RoutedEventArgse){CogFitCirclecogFitCircle=newCogFitCircle();cogFitCircle.AddPoint(0,10);cogFitCircle.AddPoint(10,0);cogFitCircle.AddPoint(0,-10);cogFitCircle.AddPoint(-10,0);......
  • 时间复杂度(斐波那契)和空间复杂度
    1.0时间复杂度(斐波那契)//计算阶层递归Fac的时间复杂度longlongFac(size_tN){if(0==N)return1;returnFac(N-1)*N;}该算法的时间复杂度度很稳定:O(N)//计算斐波那契数列递归Fib的时间复杂度longlongFib(size_tN){if(N<3)return1;returnFib(N-1)+......
  • 时间复杂度(常数循环、strchr、冒泡排序、二分查找)
    1.1常数循环//计算复杂度voidFunc4(intk){intcount=0;for(intk=0;k<100;++k){++count;}printf("%d\n",count);}时间复杂度为:O(1)  注:O(1)不是代表算法只能运行一次,是常数次1.2strchr的时间复杂度//计算strchar的时间复杂度constchar*strchr(constc......
  • 算法的时间复杂度和空间复杂度
    1.算法效率1.1如何衡量一个算法的好坏longlongFib(intN){if(N<3){return1;}returnFib(N-1)+Fib(N-2);}斐波那契数列的递归实现方式非常简洁,但是简洁一定好吗?那应该如何衡量其好与坏呢?1.2算法的复杂度衡量一个算法的好坏,一般是从时间和空间上来衡量的,即时间......
  • 【C++】STL 容器 - list 双向链表容器 ① ( 容器特点 | 容器操作时间复杂度 | 构造函
    文章目录一、list双向链表容器简介1、容器特点2、容器操作时间复杂度3、遍历访问5、头文件二、list双向链表容器构造函数1、默认无参构造函数2、创建包含n个相同元素的list双向链表3、使用初始化列表构造list双向链表4、使用另外一个list容器构造list双向链表容器......