首页 > 其他分享 >one last fwt

one last fwt

时间:2025-01-18 09:00:32浏览次数:1  
标签:Phi last 多项式 FWT cdots fwt prod vdots

因为今天场上成功手搓三维 FWT 决定深刻背诵一下。

以下默认 \(\oplus\) 为高维不进位加法。

分圆多项式

手玩转移矩阵太过神秘了,不讨论了就。

定义分圆多项式 \(\Phi_k(x)=\prod_{\gcd(i,k)=1}(x-w_k^i)\)。

根据 \(x^i-1=\prod_{d|i}\Phi_d(x)\) 可以化简得到 \(\Phi_k(x)=\prod_{d|k}(x^d-1)^{\mu(\frac{k}{d})}\)。

分圆多项式是素多项式,在高维 FWT 中可以当成模数使用。

然后因为 \(\Phi_k(x)|x^k-1\),所以一般过程中模 \(x^k-1\),最后再模 \(\Phi_k(x)\)。

高维 FWT

以下只讨论 \(\oplus\)。

因为 FWT 是线性变换所以考虑构造变换矩阵:

\[\begin{bmatrix} 1&1&1&\cdots&1&1&1\\ 1&w_k^1&w_k^2&\cdots&w_k^{k-3}&w_k^{k-2}&w_k^{k-1}\\ 1&w_k^2&w_k^4&\cdots&w_k^{2(k-3)}&w_k^{2(k-2)}&w_k^{2(k-1)}\\ \vdots&\vdots&\vdots&\ddots&\vdots&\vdots&\vdots\\ 1&w_k^{k-3}&w_k^{2(k-3)}&\cdots&w_k^{(k-3)(k-3)}&w_k^{(k-3)(k-2)}&w_k^{(k-3)(k-1)}\\ 1&w_k^{k-2}&w_k^{2(k-2)}&\cdots&w_k^{(k-3)(k-2)}&w_k^{(k-2)(k-2)}&w_k^{(k-2)(k-1)}\\ 1&w_k^{k-1}&w_k^{2(k-1)}&\cdots&w_k^{(k-3)(k-1)}&w_k^{(k-2)(k-1)}&w_k^{(k-1)(k-1)}\\ \end{bmatrix} \]

其中 \(c_{j,i}c_{k,i}=c_{j\oplus k,i}\)。

然后这是范德蒙德矩阵,所以逆变换矩阵为:

\[\frac{1}{k}\begin{bmatrix} 1&1&1&\cdots&1&1&1\\ 1&w_k^{-1}&w_k^{-2}&\cdots&w_k^{-(k-3)}&w_k^{-(k-2)}&w_k^{-(k-1)}\\ 1&w_k^{-2}&w_k^{-4}&\cdots&w_k^{-2(k-3)}&w_k^{-2(k-2)}&w_k^{-2(k-1)}\\ \vdots&\vdots&\vdots&\ddots&\vdots&\vdots&\vdots\\ 1&w_k^{-(k-3)}&w_k^{-2(k-3)}&\cdots&w_k^{-(k-3)(k-3)}&w_k^{-(k-3)(k-2)}&w_k^{-(k-3)(k-1)}\\ 1&w_k^{-(k-2)}&w_k^{-2(k-2)}&\cdots&w_k^{-(k-3)(k-2)}&w_k^{-(k-2)(k-2)}&w_k^{-(k-2)(k-1)}\\ 1&w_k^{-(k-1)}&w_k^{-2(k-1)}&\cdots&w_k^{-(k-3)(k-1)}&w_k^{-(k-2)(k-1)}&w_k^{-(k-1)(k-1)}\\ \end{bmatrix} \]

模数良好时模意义下可能存在单位根 \(w_k\),但是有时可能不存在,所以考虑一种通解,去人为定义一个形式幂级数 \(x\),然后做模多项式运算。

一般这里的模数多项式取 \(\Phi_k(x)\),因为你取 \(x^k-1\) 为模数多项式时,他不是素的,所以可能存在多项式没有逆元,取 \(\Phi_k(x)\) 就没有这个问题。

关于复杂度,你正常 FWT 不看内层运算的复杂度是 \(O(mk^m)\),内层运算的复杂度是 \(O(k^2\times k)\) 的,所以总复杂度是 \(O(mk^{m+3})\)。

例题

CF1103E

就是求 \((\sum x^{a_i})^n\),高维 FWT 板子。

P5577

就是求 \(\prod_{i=1}^n(1+x^{a_i})\),因为 \(n\) 较大所以肯定不能暴力算,考虑研究一下 \(FWT(1+x^{a_i})\) 的性质。

不难发现 \(FWT_k(1+x^{a_i})=c_{1,k}+c_{a_i,k}=1+c_{a_i,k}\)。

那么 \(FWT_k(\prod_{i=1}^n(1+x^{a_i}))=\prod_{i=1}^nFWT_k(1+x^{a_i})=\prod_{i=1}^n(1+c_{a_i,k})\)。

所以说你现在只需要去计算 \(1+c_{a_i,k}\) 的指数,因为 \(c_{a_i,k}\) 只有 \(k\) 种取值,所以相当于要对每一位计算 \(1+w_k^n\) 的指数。

然后我们再考虑 \(FWT_k(\sum_{i=1}^nx^{a_i})=\sum_{i=1}^nFWT(x^{a_i})=\sum_{i=1}^nc_{a_i,k}\),也就是说直接对原序列的计数数组 FWT 得到结果的每一位的 \(w_k^n\) 的系数,就是你原始式子 \(1+w_k^n\) 的指数。

然后套板子就行。

ABC367G

求的是 \(\sum_{k=0}^Nk^K[x^ky^0]\prod_{i=1}^n(1+x^{a_i}y)\),\(x\) 做的是异或卷积,\(y\) 做的是长为 \(m\) 循环卷积。

先考虑求后面的 \(\prod_{i=1}^n(1+x^{a_i}y)\),发现这长得很像上一题,因为二位异或 FWT 的矩阵是 \(\begin{bmatrix}1&1\\1&-1\end{bmatrix}\),所以 \(FWT_k(\prod_{i=1}^n(1+x^{a_i}y))=\prod_{i=1}^nFWT_k(1+x^{a_i}y)=\prod_{i=1}^n(1\plusmn y)\)。

相当于你对每一位要算 \(1+y\) 的系数和 \(1-y\) 的指数,设这两个指数为 \(c_0,c_1\),根据上一题的结论我们有 \(c_0+c_1=n,c_0-c_1=FWT_k(\sum x^{a_i})\)。

然后求出 \([y^0](1+y)^{c_0}(1-y)^{c_1}\) 后再 IFWT 回去就是答案。

标签:Phi,last,多项式,FWT,cdots,fwt,prod,vdots
From: https://www.cnblogs.com/NtYester/p/18677753

相关文章

  • elasticsearch之数据聚合
    **聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如:什么品牌的手机最受欢迎?这些手机的平均价格、最高价格、最低价格?这些手机每月的销售情况如何?实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近实时搜索效果。聚合的种......
  • elasticsearch之DSL查询结果处理
    搜索的结果可以按照用户指定的方式去处理或展示。排序分页搜索关键词高亮排序elasticsearch默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。普通字段排序keyword、数值、日......
  • elasticsearch的DSL查询文档
    1、DSL查询文档Elasticsearch提供了基于JSON的DSL(DomainSpecificLanguage)来定义查询。常见的查询类型包括:查询所有:查询出所有数据,一般测试用。例如:match_all全文检索(fulltext)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如:match_query:单字段查询mult......
  • ElasticSearch基础知识
    1.背景2.概念2.1文档Document类似mysql一列,json格式存储2.2索引Index索引类似数据库里的表,相同文档类型的集合2.3映射mapping类似表结构属性:type:类型text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)。keyword类型只能整体搜索,不支持搜索部分内容index:是......
  • elasticsearch7-集群磁盘使用率不均问题处理
    1、因消息积压发现磁盘使用率不均告警内容:er-iot-log-queue队列消息积压已超过500,当前为58322、信息收集1.使用_cat/nodes?vAPI查看每个节点的负载情况curl-XGET"http://localhost:9200/_cat/nodes?v"ipheap.percentram.percentcpuload_1mload_5m......
  • elasticsearch的RestAPI之操作文档
    RestClient操作文档新增文档将DB表中的数据同步到elasticsearch1)查询数据库1.1)数据库查询后的结果是一个Hotel类型的对象1@Data2@TableName("tb_hotel")3publicclassHotel{4@TableId(type=IdType.INPUT)5privateLongid;6privateString......
  • 【Elasticsearch复合查询】
    Elasticsearch复合查询在Elasticsearch中,复合查询(CompoundQueries)是用来封装其他复合查询或叶子查询的查询类型。它们的主要目的是组合这些查询的结果和分数、改变它们的行为或者从查询上下文切换到过滤上下文。一个常见的复合查询是bool查询,它允许你通过布尔逻辑组合多......
  • go elastic 商品与内容相似性推荐
    主要是推介代码的规划测试用例func(this*TestGeneralTestRecommendSuite)Test007_twiceRedisQueryRecommend2Es(){//this.inst.Reindex()varq=generaldto.FindBeanObjectQueryRequest()q.ObjectType="brand"q.ObjectId=112233varret=......
  • ElasticSearch在Windows环境搭建&测试
    引子也持续关注大数据相关内容一段时间,大数据内容很多。想了下还是从目前项目需求侧出发,进行相关学习。Elasticsearch(ES)是位于ElasticStack(ELKstack)核心的分布式搜索和分析引擎。Logstash和Beats有助于收集、聚合和丰富您的数据并将其存储在Elasticsearch中。Kibana使......
  • 【Elasticsearch】 复合查询
    ......