当前位置: 首页 > news >正文

科技

带权高维前缀和

这个感觉很有用啊。对于一个\(n\)维,每一维长度为\(k\)的东西,并且每一维的贡献系数是固定的\(w_{y,x}\)表示一维中\(x\)\(y\)的贡献系数。所以\(W_{Y,X}=\prod w_{y,x}\)。然后我们考虑怎么快速求这个。我们设\(f_{i,S,S'}\)表示当前处理到\(i\)维的时候,比他高的内些维都是\(S\)的这些数中,对低于\(i\)维的数是\(S'\)的所有贡献是多少。转移我们只需要把\(S\)的第\(i+1\)维删去,设为\(T\),然后枚举第\(i+1\)维,设枚举了两个\(j,k\),那么我们将\(f_{i,T,S'+j}\)\(f_{i,T,S'+k}\),互相转移,为什么是\(S'\)\(S'\)转移,其余数对\(S'\)贡献系数一样,所以对于转移,只需要管当前维的贡献系数就行了。我们发现设三维是冗余的,可以压成一维,像状压一样。这个做法还可以推广到从每一维长度维\(x\)变成长度为\(y\)

一个比较万能的模板

int len = pow(K, n);// 原来的长度for(int l1 = M, l2 = 1, cnt = 0; cnt < n; l1 *= M, l2 *= M, cnt ++) {len = len / K * M;// 变换完当前这一维的长度for(int i = 0; i < len; i += l1) {// 枚举变换后的起点int _i = i / M * K;// 原来的起点for(int y = 0, v = 0; y < M; y ++, v += l2) {for(int x = 0, u = 0; x < K; x ++, u += l2) { // 这个分别枚举第$i$维变换后和变化前分别是什么值for(int j = 0; j < l2; j ++) {g[i + v + j] += f[_i + u + j] * w[y][x];// 转移,使用临时数组}}}}for(int i = 0; i < len; i ++) f[i] = g[i], g[i] = 0;}

差分本质上是前缀和,一样

张量分解

在FWT领域有用。有了这个就不用想怎么找\(FWT\)变换了。思路是把贡献矩阵拆成若干个秩\(1\)矩阵,然后再进行正变换。这些尽可能少的秩1矩阵需要能够线性表示出贡献矩阵,然后逆变换就是高维带权前缀和。下面使用异或卷积来距离。

考虑单独的一维,贡献矩阵长这样:

\[\begin{bmatrix}1 & 0 \\0 & 1 \end{bmatrix} \begin{bmatrix}0 & 1 \\1 & 0 \end{bmatrix} \]

其中左边是对\(C_0\)的贡献,右边是对\(C_1\)的贡献,每一个位置代表\(A_{0/1}*B_{0/1}\)\(C_{0/1}\)的贡献。我们把他们拆成几个秩\(1\)的,发现这个两个就行了,分别是和和差。

\[\begin{bmatrix}1 & 1 \\1 & 1 \end{bmatrix} \begin{bmatrix}1 & -1 \\-1 & 1 \end{bmatrix} \]

可以线性表示是好说的。变成秩\(1\)有什么好处呢,我们可以把这两个矩阵表示成两个多项式相乘,\((A_0+A_1)*(B_0+B_1),(A_0-A_1)*(B_0-B_1)\)。所以我们正变换\(FWTA_0=A_0+A_1,FWTA_1=A_0-A_1\),\(B\)同理,然后我们对\(FWTA\)\(FWTB\)进行点乘得到\(FWTC\),逆变换就是\(C_0=(FWTC_0+FWTC_1)/2,C_1=(FWTC_0-FWTC_1)/2\)。这个就高维前缀和的领域了。那么我们就得到了\(C\)了。复杂度的话,一般是\(k^n*k\)\(k\)是拆成多少个秩\(1\)矩阵,\(n\)是维数。

http://www.jsqmd.com/news/820740/

相关文章:

  • 实战解析:XiaoMusic技术架构深度剖析与智能音箱语音控制实现方案
  • 2026年度盘点!10款好用的降AI工具,AI率一键降至9% - 降AI实验室
  • 这份「基于SpringBoot的疾病防控综合系统」源码和论文,适合做公共卫生类毕设参考!
  • 工业喷淋塔技术选型与实测指南 适配多工况需求 - 奔跑123
  • 天猫超市购物卡如何高价回收? - 团团收购物卡回收
  • JL-01多通道温湿度记录仪:环境监测的得力助手
  • 终极英雄联盟自动BP与战绩查询工具:Seraphine完全指南
  • 工作3年的Python程序员,转大模型开发,我总结的所有实战技巧
  • 终极指南:如何免费解锁WeMod高级功能并增强游戏体验
  • libutp 性能分析总结
  • 你真的理解 volatile 关键字了吗?
  • Spring Boot 3 全局异常处理终极指南(附完整代码架构),拿走即用
  • 如何摆脱游戏卡顿困扰:DLSS Swapper的智能性能管理方案
  • 为什么FreeBSD和苹果都爱用Clang?聊聊它的模块化设计与商业友好性
  • 优雅进程终止:Go工具halt的设计原理与实战应用
  • 泉州 CPPM 认证培训 福建制造业采购必考证书 - 中供国培
  • 全屋定制酒柜技术拆解:从板材到工艺的硬核标准 - 奔跑123
  • Linux 端口管理指南
  • 当用户觉得 Agent 变笨时,真正退化的往往不是模型
  • 大模型小白入门指南:3分钟读懂核心逻辑+高性价比产品推荐(建议收藏+转发)
  • 2026年OpenAI API聚合站权威推荐:为开发者与企业提供全方位的可靠选型指南
  • 人工智能生成内容的文化影响:第一部分
  • 【权威实测】Perplexity UI v2.8.3组件查询API响应延迟骤降76%的6项必调参数
  • Rust 实现轻量级终端复用器 Kibitz:零配置的会话管理利器
  • 2026 年 5 月常州劳力士欧米茄浪琴市场行情对比 - 奢侈品回收测评
  • 2026 济南黄金回收高价变现攻略|拿捏出手时机,多赚不少钱 - 奢侈品回收测评
  • C# —— 上位机行业解析与完整学习规划
  • 别盲目跟风!程序员转智能体开发,先看这篇避坑指南
  • 收藏!小白程序员必看:AI抢工作?2026年高薪新职业已出现!速进!
  • 最近,程序员的离职潮彻底消失了。。。