【题解】Solution Set - 新高一矩阵选讲「陶治霖」

新高一矩阵选讲「陶治霖」

https://www.becoder.com.cn/contest/5348

一般的转移矩阵可以放在初始矩阵的前面或者后面,下面为了叙述方便分别成为:前置转移矩阵、后置转移矩阵。


「CF1970E3」Trails (Hard)

考虑 DP。

定义 fi,j 表示,第 i 天走到 j 的方案数。有转移:

fi,j=k=1mfi1,k×(sjlk+sklj+sjsk)

https://www.luogu.com.cn/article/ixp00mtq

Motivation: 为什么要设 w?因为这样可以把转移矩阵转化成两个单项式的代数和,从而通过另外两个矩阵来得到。接着通过结合律来间接实现“交换律”,从而缩小矩阵的规模。


「CF1609E」William The Oblivious

不考虑修改。

考虑 DP。

fi,j 表示,前 i 位,存在 abc 的最长前缀长度为 j,的最小代价。

fi,0=fi1,0+[si=a]fi,1=min{fi1,0+[sia],fi1,1+[si=b]}fi,2=min{fi1,1+[sib],fi1,2+[si=c]}


打住!这样的 DP 好像并没有什么用。

再仔细思考一下,如果将 a,b,c 映射到 1,2,3,不存在 abc 的子序列,根据 Dilworth 定理,就等价于不能将原序列划分为超过 2 个下降子序列。虽然但是好像还是没什么用。😅


emmmmmmmmmmmmmm,问题不大,还是回 DP 吧。

好像是 min+ 矩乘的形式,好好好,线段树维护一下矩阵应该就好了。

初始矩阵:

[000]

后置转移矩阵:

[[si=a][sia]++[si=b][sib]++[si=b]]

(好耶!居然自己推出来了(


「CF1458C」Latin Square

还是有点考思维,对于矩阵中的每一个元素我们维护:(x,y,z) 表示她在原矩阵中的位置和值。

每次更新 O(1) 维护一下每一维的增量,最后统一算。

https://www.luogu.com.cn/article/cv0ox3lk


「CF593E」Strange Calculation and Cats

感觉难度虚高(?

n×m20?直接将所有点的方案数保存在一个矩阵里面,然后每次操作的时候对应不同的一个转移矩阵。

设每次操作间 i 的差值为 di。有 di109

则,时间复杂度为 O((nm)3logdi)=O((nm)3log(di))

由均值不等式,当所有 di 相等时,di 取最大值。

则,最坏时间复杂度为 O((nm)3log(109T))=O((nm)3Tlog(109T))1,328,771,237

这 nm 4s 也跑不过啊,但是 std 是这样,我们也没办法,只能相信 CF 神机了(本地卡满的话 10s 跑不出来(


「CF837F」Prefix Sums

i 次前缀和,可以理解成高维前缀和,于是每一位的贡献就是组合数(?https://www.luogu.com.cn/article/pe2tw8uk

或者生成函数理解?

感性理解一下,如果 A0 里面非零的元素很多,那么 Ai,n 增长的一定很快。具体的当这个值 >10 的时候就可以暴力了。

否则的话,可以二分答案,这个时候 n<10,check 的时候就可以矩阵加速了。


「CF51E」Pentagon

用一张图的邻接矩阵自乘 k 次,对应点 (i,j) 即为从 ij 经过路径长度为 k+1 的方案数。

特别的 (i,i) (主对角线)上的和除以 k+1,即为 k+1 元 “环” 的个数。(这里的环打引号是因为环上可能有重边。


证明其实也比较显然。其实是一个 dp 的过程。

fk(i,j) 为第 k 次自乘后的矩阵。

则有转移:

fk(i,j)=t=1nfk1(i,t)×f0(t,j)

然后,我们发现这就是矩阵乘法,就完了。

然后这道题求五元环的话,就要去除所有的三元环就可以了。


「GXOI/GZOI2019」 逼死强迫症

考虑 DP。

f[i][0/1][0/1][j]:前 i 个,第 i 位的上面/下面是否空位,用掉了 j1×1

不想再抄一遍转移方程了😭(好难崩

https://www.luogu.com.cn/record/171025316

然后就有一个 O(123logn) 的做法,但是非常非常非常的难写,实际上也有人这么做了:https://www.luogu.com.cn/article/rl04j4ml


还是学学题解吧。

gi 为斐波拉契数列,hi 为其前缀和。

则有:hi=gi+21

证明:

考虑数学归纳法。

假设该等式对 im 成立,那么对于 i=m+1

hm=gm+21hm+gm+1=gm+2+gm+11hm+1=gm+31

https://www.luogu.com.cn/article/wkm5np6x

我的实现里面矩阵是:

[fi1figi1gi1]


后记:好像看到 @spdarkle 用的是 2x2 的矩阵?!?!

emmmm,其实吧,我觉得只要不超过 5 的矩阵我都是能接受的(12 的就算了吧(


「SDOI2009」HH去散步

还是邻接矩阵自乘,然后考虑剔除重边的情况。

考虑给对男方家里圣诞泛滥的能尽快就看看东方红抗生素oo

posted @   CloudWings  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示