首页 > 其他分享 >2023-4-27 #52 来看这万千旧梦

2023-4-27 #52 来看这万千旧梦

时间:2023-04-28 15:47:45浏览次数:46  
标签:27 frac 前缀 矩阵 52 问题 旧梦 基底 李超树

323 AT_xmascon21_c Count Me

先做没有问号的情况。

把问题倒着做,每次删只能删连续段的末端 \(0\),或是连续段的开头 \(1\),若我们在开头插入 \(0\),在结尾插入 \(1\) 并强制这些不能删,那么我们能将 \(0\) 连续段与 \(1\) 连续段匹配,操作可以看作将一个 \(01\) 变成 \(0\) 或是 \(1\),于是我们完成了去重。

我们在相邻位置之间插入一个分隔符,考察第一次操作这两个分隔符两端字符的时间,将其作为分隔符的删除时间,容易发现其为 \(1\) 到 \(n+1\) 的一个排列。

考察字符串对排列的限制,一个简单的观察是一个 \(0\) 限制右边比左边先删除,\(1\) 则相反,事实上任意满足限制的排列都能构造出对应的字符串,于是问题变为了 loj#575. 「LibreOJ NOI Round #2」不等关系

问号事实上很好考虑,因为任意合法排列填完后问号都会被唯一地确定,用问号分割串分别做即可。

324 CFgym102978J Japanese Knowledge

没有 \(k\) 限制的问题是经典的阶梯状网格图格路计数,具体可见 CFgym102220I Temperature Survey,做法大致是每次取中点劈开,递归左上,并使用若干次 FFT 刻画中间红色长方形的转移,然后递归右下。

image

\(k>0\) 时存在一组双射:

仅保留区间 \([k+1,n]\) 内的数,并将其余数减一(为了强制没有好操作),做 \(k\) 无限制的问题的答案等于恰好 \(k\) 个好操作的答案。

证明考虑建立两个问题的双射:

  • 原问题到新问题:删去所有 \(A_i=x_i\) 的 \(x_i\),剩余的数字拼接在一起一定符合要求;
  • 新问题到原问题:从小到大枚举新问题的答案序列,每次放在大于等于其的第一个空位置,剩下的位置填 \(A_i\)。

容易发现这两个映射互为逆。

于是问题类似上面的 \(k\) 无限制,分治 NTT 即可,复杂度 \(O(n\log^2 n)\)。

325 CFgym102978E Edge Subsets

以前模拟赛考过,然而现在又不会做了。

不妨令 \((A,B)=1\),因为可以分组处理。

我们将一个点 \(x\) 记作 \((\lfloor\frac xB\rfloor,\frac xA\bmod B)\),于是 \(+A\) 相当于向右(循环)或是向右下,\(+B\) 相当于向下。

于是我们获得了一个类似网格图的东西,有两种状压方式:

  • 从上往下扫,记录整行匹配状态,状态数 \(2^B\lceil\frac{n}{B}\rceil\);
  • 枚举第一列状态,从左到右扫,记录整列匹配状态,状态数 \(4^{\lceil\frac nB\rceil}B\)。

平衡可以得到状态数不超过 \(2^{\sqrt{2n}}\operatorname{poly}(n)\) 的做法。

326 CFgym103415J Cafeteria

将转移刻画为矩阵形式,我们若计算出前缀积矩阵 \(A_i\) 与前缀积的逆矩阵 \(B_i\),就可以 \(O(m)\) 地处理一次询问。

观察转移矩阵,其只有主对角线/主对角线上方可能为 \(1\),于是左乘该矩阵等价于对于每个主对角线上方的 \(1\)(假设其在 \((i,i+1)\)),将第 \(i\) 列加到第 \(i+1\) 列,是 \(O(n^2)\) 的。

还需求出前缀积的逆矩阵,也就是要预处理右乘这个矩阵逆的前缀积。右乘该矩阵等价于把第 \(i+1\) 行加到第 \(i\) 行,因此右乘其逆就等价于把第 \(i\) 行减去第 \(i+1\) 行。

复杂度 \(O(nm^2+qm)\)。

327 2021 集训队互测 Round 12 蜘蛛爬树

数据结构学傻了.jpg。

答案形式一定是在某个点跳完所有的横边,假设这个点是 \(p\),我们使用树剖的结构刻画其:

  • \(\log\) 条重链的前缀所有轻子树(包括根);
  • 一条重链的区间内所有轻子树(包括根);
  • \(\log\) 个点的子树(每个跳到新重链的点);
  • \(\operatorname{lca}\) 子树补内的结点,这一部分需要继续划分,可以得到形式与第一、二部分一致的问题。

第一部分可以离线下来对于每条重链扫描线维护李超树,第二部分使用线段树套李超树(由于是静态的,pushup 可以直接李超树合并),第三部分维护子树的李超树合并。

一个细节是第二部分李超树合并会改变某些结点的信息,你可以把询问挂在对应线段树结点,在合并完当前线段树子树的李超树后立即处理询问。

复杂度 \(O(n\log^2 n)\)。

328 Ptz2019 Winter Day3 Japanese Contest I Ranks

将问题分为三部分解决:

  • \(A\) 的秩;
  • \(A\) 去掉第 \(i\) 行(记作 \(v_i\))后秩的变化;
  • \(A\) 取反 \((i,j)\) 位置后去掉第 \(v_i\) 秩的变化。

第一部分使用线性基可以 \(O(\frac{n^3}{w})\)。

第二部分等价于 \(A\) 去掉 \(v_i\) 后能否线性表示出 \(v_i\)。即是否存在一个异或和为 \(0\) 的集合包含 \(v_i\)。

将所有自由元用基底表示出来,我们断言只有这些基底,以及自由元可以满足上面的性质,证明比较简单,将某个未出现的基底所在的集合拿出来,将所有自由元用基底表示,可以发现这个基底能被其余基底表示出来,矛盾。

第三部分是类似的,其相当于是否存在一个异或和为 \(2^j\) 的集合包含 \(v_i\)。

注意到我们只需得知一个这样的集合,通过异或上异或为零的集合就可以生成所有满足条件的集合,于是我们尝试用线性基表示出 \(2^j\),若能,那么 \(2^j\) 的表示与上面合法的元素均满足条件。

复杂度 \(O(\frac{n^3}{w})\)。

标签:27,frac,前缀,矩阵,52,问题,旧梦,基底,李超树
From: https://www.cnblogs.com/xiaoziyao/p/17359363.html

相关文章

  • hdoj 展开字符串 1274 (字符串递归) 好题
    展开字符串TimeLimit:2000/1000MS(Java/Others)   MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):2116   AcceptedSubmission(s):1017ProblemDescription在纺织CAD系统开发过程中,经常会遇到纱线排列的问题。该问题的描述是这样的......
  • 产品原型20-20230427
           ......
  • 4.27
    #include<iostream>usingnamespacestd;inti=1;voidother(){   staticinta=2;   staticintb;   intc=10;   a+=2;   i+=32;   c+=5;   cout<<"---OTHER---"<<endl;   cout<<"i:"......
  • 2023.4.27
    1//实验六任务22//定义猫科动物Animal类,由其派生出猫类(Cat)和豹类(Leopard),3//在Animal类中定义虚函数,输出“MynameisAnimal”,在派生类中4//分别重新定义该函数,显示“Mynameis**”,其中**为各自类名5#include<iostream>6#include<string>7usingnamespa......
  • 4.27
    问题描述:    小明有五本新书,要接给A、B、C这三位小朋友,若每人每次只能借一本,则可以有多少不同种的接法?设计思路1.根据题意,这五本数每个人都可借阅;2.则当第一个人挑选时可以有五种不同的选择,第二个人时有四种,最后一个人有三种;3.利用三次循环嵌套,对第一个人进行五次循......
  • C/C++会员管理系统[2023-04-27]
    C/C++会员管理系统[2023-04-27]综合设计实例四课题名称:会员管理系统I、题目的目的和要求(2-3人组)随着社会的进步,人们生活水平的提高,各种各样的会员应运而生。各种便民服务的地方为了提高服务粘性,留住顾客往往采用会员制,例如便利店、健身房,生鲜超市、美容美发店等等不一而足......
  • 4.27
    1#include<iostream>2usingnamespacestd;3classRectangle{4public:5intj;6voidarea(intX=0,intY=0,intA=0,intB=0);7private:8intx,y,a,b;9};10voidRectangle::area(intX,intY,intA,intB){......
  • 4.27趣味百题4.4
    一问题描述 二设计思路最终分解为一个分子为1的分数可以用while循环执行根据埃及分数的特性对其不断分裂三流程图 四代码实现#include<iostream>usingnamespacestd;intmain(){inta=0,b=0,c=0;cout<<"请输入一个真分数先输入分子后输入分母"<<endl;cin>>a>>......
  • questions_02:【KeyError: 'mobile_phone'[27/Apr/2023 21:42:21] "POST /register/ H
    BUG在成功注册之后,如果填写相同的信息,会报出一个【KeyError:'mobile_phone'[27/Apr/202321:42:21]"POST/register/HTTP/1.1"50086526】的bug,原因是我们的cleaned_data中的数据是按照fields中的顺序去校验成功之后添加的,所以当出现相同的数据时候cleaned_data前面几个字......
  • 23-4-27--二叉树--玩转二叉树
    给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行......