首页 > 其他分享 >一小类矩阵乘法相关归约

一小类矩阵乘法相关归约

时间:2023-03-08 09:11:06浏览次数:41  
标签:删除 矩阵 sqrt 归约 kth 区间 mathcal 乘法

今天(2023.3.7)上午 大聪明 LgxTpre 问我区间 reverse 全局 kth 怎么做,我以为他问的是 区间 reverse 区间 kth,确认了一下问题才发现他降智了区间 reverse 根本不会改全局 kth,然后现在出现了新的问题,区间 reverse 区间 kth 怎么做......

我想了一会儿发现不会 polylog,下午 LgxTpre 在 U 群里问了一下,lxl 说能归约到矩阵乘法,但是一直在魔怔没说明白咋归约,142857cs 老师一言切綮,我自己想了想完善了下细节。

阅读之前请先确认,归约的不严谨的定义,以免搞混了方向。问题 A 归约到问题 B,说的是 A 的特殊情况能够对应到 B 的一般情况,那么解决了问题 A 就解决问题 B,也就是问题 A 会不弱于问题 B.

区间删除,可撤销,全局查询 \(=x\) 的个数。

现在有三个 \(\mathcal{O}(\sqrt n)\times \mathcal{O}(\sqrt n)\) 的 01 矩阵 \(A,B,C\),其中 \(C=AB\).

序列分块,\(B_{j,k}\) 为第 \(j\) 个块是否有 \(k\),很容易通过给定特殊的序列来构造出任意的 \(B\).

\(A_{i,j}\):第 \(i\) 波操作中第 \(j\) 个块是否未被删除。

在第 \(i\) 波操作中,先用 \(\mathcal{O}(\sqrt n)\) 次操作删除掉该删除的块,然后询问一遍 \(1,2,3,\cdots,\mathcal{O}(\sqrt n)\) 的出现次数,再撤销掉 \(\mathcal{O}(\sqrt n)\) 删除。这样一共用了 \(\mathcal{O}(\sqrt n)\) 次操作,可以构造出任意的 \(A_{i,\sim}\),以及询问所有的 \(C_{i,\sim}\).

区间删除,可撤销,全局 kth,也一样,通过询问一遍 \(1,2,3,\cdots,\mathcal{O}(\sqrt n)\) 的 kth,差分之后就是 \(1,2,3,\cdots,\mathcal{O}(\sqrt n)\) 的出现次数,所以也能用上面那个归约到 \(\mathcal{O}(\sqrt n)\times \mathcal{O}(\sqrt n)\) 的 01 矩阵乘法。然后区间 kth 自然不弱于全局 kth,于是现在有了:

“区间删除,可撤销,区间 kth” 归约到 “\(\mathcal{O}(\sqrt n)\times \mathcal{O}(\sqrt n)\) 的 01 矩阵乘法”。

现在来完成下面几个问题:

  • 区间加,区间(全局亦可) \(\leq x\) 的个数。

\(\leq x\) 减去 \(\leq (x-1)\) 的就是 \(=x\) 的个数,然后用区间加/减 \(+\infty\) 来实现区间删除,以及删除操作的撤销。从而归约到区间删除,可撤销,全局 \(=x\) 的数的个数。

这里甚至只能加正数都可以,只需要让第 \(i\) 波问的是 \((i-1)\times inf+x\) 就行,是 \(>i\times inf\) 的视作不存在。

  • 区间加,区间(全局亦可) kth。

同理,直接归约到区间删除,可撤销,区间 kth。

  • link, cut, 区间 kth

用 link 和 cut 把删除的放一边,没删除的放另一边,当然这里的 kth 也能换成 \(\leq x\) 的个数。

  • 区间 reverse,区间 kth

也是每次把删除了的块用 reverse 扔到一边。

再随便列几个:

  • 区间覆盖,可撤销,全局 kth(归约到区间删除 可撤销)
  • 交换一个前缀和一个后缀,区间 kth(link cut 归约到这个)
  • 区间乘,区间 kth(和区间加一样归约)
  • 区间复制,区间 kth

标签:删除,矩阵,sqrt,归约,kth,区间,mathcal,乘法
From: https://www.cnblogs.com/do-while-true/p/17190734.html

相关文章

  • UVA-442 矩阵链乘 题解答案代码 算法竞赛入门经典第二版GitHub - jzplp/aoapc-UVA-Ans
    GitHub-jzplp/aoapc-UVA-Answer:算法竞赛入门经典例题和习题答案刘汝佳第二版AC代码#include<iostream>#include<string>#include<stack>usingnamespacestd;struct......
  • 数学结构化语言——逆矩阵的计算(三)
    逆矩阵是矩阵理论的一个重要概念,逆矩阵的求法一直是矩阵理论的难点。逆矩阵可以类比成数字的倒数,比如数字5的倒数是1/5,矩阵A的“倒数”是A的逆矩阵。5(1/5)=1,A(A的逆矩......
  • 数学结构化语言——矩阵的分块简化(四)
    分块矩阵是线性代数中的一个重要内容,是处理阶数较高的矩阵时常采用的技巧,也是数学在多领域的研究工具。对矩阵进行适当分块,可使高阶矩阵的运算可以转化为低阶矩阵的运算,同......
  • 稀疏矩阵存储
    稀疏矩阵存储稀疏矩阵:设在mxn的矩阵中有t个非零元素。令a=t/(mxn)当a<=0.05时称为稀疏矩阵。顺序存储结构第0行中通常用来存储总体信息。链......
  • 矩阵——乘法的核心理解
    矩阵可以被看成一个表格,每个格里面只能放数字的表格。“矩”的意思是矩形,由数字组成的矩形;“阵”的意思是整齐,这些数字排列起来是非常整齐的,并不会歪歪扭扭;矩阵中,横向的数......
  • 矩阵的变幻(旋转,转置,翻转,对角线,反对角线)
    旋转顺时针旋转90°(逆时针旋转270°)点击查看代码voidrotate_90(){ //所有矩阵适用 swap(n,m); //注意行列已互换 for(inti=1;i<=n;i++){ for(intj=......
  • 矩阵符号的不同情景展现
    在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中......
  • 无符号乘法器
    无符号乘法器与无符号加法类似,无符号乘法器也要求两边的乘数是无符号的,一旦有一方为有符号数,则整个结果为有符号数,否则综合会出现不可预知的结果。与无符号加法不同的是,无......
  • 大整数乘法-算法设计与分析
    分治法-大整数乘法输入:正负零不限,两数长度也不限。输入完第一个数后,回车,输入第二个数,回车。输出:两个数相乘的结果实现思路1.用C++实现大整数乘法2.算法性能优化对......
  • 给闺女写了一个99乘法除法练习题
    #99乘法练习importrandomimporttimenum=0start=time.time()forxinrange(10):a=random.randint(1,9)b=random.randint(1,9)print('请小余同......