首页 > 其他分享 >【垫底模拟】CSP-12

【垫底模拟】CSP-12

时间:2023-08-02 16:37:54浏览次数:38  
标签:11 12 匹配 矩阵 times 垫底 aligned CSP 向量

一场比赛题解好像必须需要一张头图:

T1 随

不会球教。

T2 便

首先明确:

  • 子串是连续的

  • 子序列是不连续的,可以去掉其中的任意几个元素。

如:子串\(hellloworld\) 中子序列 \(helloworld\) 出现了 \(3\) 次。

设 \(f_{i,j}\) 是表示 \(S\) 的 子串 \([1,i]\) 中匹配到目标串 \(helloworld\) 的第 \(j\) 位的 子序列 数的期望数量,有:

  • 当 \(S_i\) 已经确定了,如果 \(S_i\) 没有和第 \(j\) 位匹配,这一位对于匹配到 \(j\) 位的方案数量是不变的,即 \(f_{i,j}=f{i-1,j}\)。

  • 当 \(S_i\) 已经确定了,如果 \(S_i\) 和 第 \(j\) 位匹配了,那么这一位可以与第 \(j\) 位置匹配,由 \(j-1\) 的状态转移过来,即 \(f_{i,j}=f_{i-1,j}+f_{i-1,j-1}\)。

  • 如果 \(S_i\) 不确定,那么这一位有可能是匹配的,也可能是不匹配的 即 \(f_{i,j}=f_{i-1,j}+p_j\times f_{i-1,j-1}\)

设 \(S\) 是子串,\(P\) 是目标串,\(p_j\) 是匹配的概率,有:

\[ \begin{aligned} &* 当 S_i 确定时,f_{i,j}=f_{i-1,j}+(S_i==P_j)\times f_{i-1,j-1}\\ &* 当 S_i 不定时,f_{i,j}=f_{i-1,j}+p_{j}\times f_{i-1,j-1} \end{aligned} \]

然后因为我们的目标串是 \(11\) 位,所以复杂度应该是 \(O(11\times n)\),因为我们 \(q\) 次询问次次边定与不定,所以总时间复杂度应是 \(O(11\times n\times q)\) 约为 \(10^11\)。

所以考虑转化矩阵进行优化。

因为我们的答案要在 \(j==11\) 上查询,其他状态只是用来转移,可以用矩阵代替,即:

设 \(f_i\) 是一个行数为 \(11\) 的列数为 \(1\) 的列向量,而 \(11\times 11\) 大小的矩阵 \(A_i\) 表示转换关系,设 \(f_i=f_{i-1}\times A_i\)。

或者这样理解:

众所周知,\(n\times m\) 的矩阵 \(A\) 乘上 \(m\times k\) 的矩阵 \(B\) 等于 \(n\times k\) 的矩阵 \(C\)。

那么 \(1\times 11\) 的列向量 \(f_i\) 乘上 \(11\times 11\) 的矩阵 \(B\) 可以得到最终矩阵 \(1\times 11\) 表示最终状态。

而我们的矩阵乘法是 \(C[i][j]=A[i][0] \times B[0][j]+A[i][1] \times B[1][j]+\) …… \(+A[i][m-1] \times B[m-1][j]\),即 \(A\) 的一行乘 \(B\) 的一列。

于是有列向量运算:

有关矩阵与向量乘积

重复一遍:设 \(f_i\) 是一个行数为 \(11\) 的列数为 \(1\) 的列向量,而 \(11\times 11\) 大小的矩阵 \(A_i\) 表示转换关系,设 \(f_i=f_{i-1}\times A_i\)。

首先,无论 \(S_i\) 是否确定,\(A_{j,j}=1\) 。

为什么?返回上面最开始的公式:

\[ \begin{aligned} &* 当 S_i 确定时,f_{i,j}=f_{i-1,j}+(S_i==P_j)\times f_{i-1,j-1}\\ &* 当 S_i 不定时,f_{i,j}=f_{i-1,j}+p_{j}\times f_{i-1,j-1} \end{aligned} \]

无论到底定不定,\(f_{i,j}=f_{i-1,j}+k\),根据列向量乘矩阵法则,\(A_{j,j}\) 一定是 \(1\)。(自己手模一遍吧)

然后类比去处理 \(k\) 的问题:

  • 当 \(S_i\) 确定时,\(A_{j-1,j}=(S_i==T_j)\)。

  • 当 \(S_i\) 不定时,\(A_{j-1,j}=p_j\)。

其余的位置都是 \(0\),它是一个三角矩阵。

用线段树维护矩阵,每次查询都是单点修改与区间查询,整挺好。

然后时间复杂度就成了 \(O(好像不能过)\)。

(\(O(11^3(n+q\times log_2^{n}\)))

最后我们再继续优化:

因为是三角矩阵,所以可以酱紫:

\[ \begin{aligned} \sum_{k=0}^{11}\limits A_{i,k}\times B_{k,j}=\sum_{k=i}^{j}\limits A_{i,k}\times B_{k,j} \end{aligned} \]

然后结束,还能优化但是我摆了,拜了个拜。

标签:11,12,匹配,矩阵,times,垫底,aligned,CSP,向量
From: https://www.cnblogs.com/sonnety-v0cali0d-kksk/p/17601017.html

相关文章

  • 学习Java的第12天
    packageoperator;publicclassDemo04{publicstaticvoidmain(String[]args){//++--自增,自减一元运算符inta=3;intb=a++;//执行完这行代码后,先给b赋值,再自增//a=a+1System.out.println(a);//a=......
  • 12个常见idea快捷键 记录
    sout:快速生成System.out.println();psvm:快速生成main方法;Ctrl+Alt+V:补全等号左边的变量类型和变量名;Ctrl+Shift+Enter/Alt+Enter :补全当前行的结束分号,或者在方法名、if后使用可补全小括号和花括号;Shift+Enter:在当前行的下一行创建新行,相当于光标跳转到......
  • 「赛后总结」暑假 CSP 模拟赛系列
    「赛后总结」暑假CSP模拟赛系列点击查看目录目录「赛后总结」暑假CSP模拟赛系列20230728(fengwuround)T3CountMultisetT4Juliathesnail20230730(ZZ作者round)T3数组T4树20230731(Max_QAQround)T3UT4E20230801(letitdownround)T2神(eldenring)T4动(genshin)20230802(Max_......
  • UVA 12170
    从另一个网站上的我的博客里转的。感觉放在一起比较好。时间久远,而且是英文(流泪)。EasyClimbStep1If\(x_i,d\le100\).Thendefine\(dp_{i,j}\)astheminimumcostforthefirst\(i\)stacks,with\(j\)astheheightofthe\(i^{\tt{th}}\)stack.Then,theformu......
  • FX110: 12年亏空7个账户终成专业交易员
    “外汇交易绝不是可以三心二意的事情,赚钱哪有那么容易,只有那些坚持在这场艰难的战役中苦战的人,才能最终站上山顶。”——下文专业交易员JimK分享出了他的交易成长之路。4年亏空7个账户,终于保住了账户JimK外汇交易近15年,刚开始只能在上班之余兼职交易,他认为兼职交易者也就是在专业......
  • CSP2021 游记
    前言这个人是蒟蒻,初二,在机房属于是垫底。今年是第一次参加CSP-S,第二次参加CSP-J。Day-1颓。Day0学校搞运动会,上午一边看运动会,一边复(摸)习(鱼)。中午\(1:00\)出发,在车上又看了会儿算法。全车的人都在颓。回了酒店后继续颓,感觉明天要凉。Day1早晨\(6:30\)起床,吃早饭......
  • CSP2022 游寄
    前言话不多说,考得太烂了。差点退役。Butthereisalongerwaytogo.It'snottheend.初赛J组91.5,学校排名第一,S组76,学校排名第三。今年学校去了好多人,\(pj\)有二十几个,\(tg\)十几个。离谱的,宇宙射线。Day-3JS通知CSP取消,哭了一晚上。(现在想想为什么哭,不考......
  • 112. 路径总和
    给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。示例1:输入:root=[5,4,8,11,null,13,4,7,2,null,null,null,1],targe......
  • CSP模拟11
    看到题目就绷不住了。今天事故挺多的,心里活动也很复杂。在一道题上浪费太多时间了……明知道做不出来还挺不甘……挺怪的。虽然中场改题面但T3其实依旧水但被T1绑住了,不知是不是对当时摆烂的后悔或弥补.果然时间是守恒的原数位DP.数位DP刚好要做原题,但摆了没做。发现这一事实......
  • 软路由3 卓凌工控 j6412
    配置j6412、双内存槽最大32x2=64g、4x2.5G网口、1xm2、1xsata价格202304、x宝、750、准系统有sata一体线、外置8寸风扇稳定性听说n5xx跑虚拟机有bug,又n100这代只能单个卡槽装32g,所以入j6412,内存也不太挑,鱼竿厂光威、玖合都可以。但是基本吃灰状态没怎么用,而且j64......