PKUSC 2021

本文主要探讨了四个算法问题:求和变换的矩阵运算,逛街问题的时间复杂度分析,一棵树的结构变化及其贡献,以及代金券支付策略的最优化。对于求和变换,利用矩阵快速幂优化求解;逛街问题通过构建树形结构并使用平衡树或树状数组维护;在树的构造问题中,通过换根DP解决;代金券问题采用二分查找和线段树维护。所有问题均给出了解决方案的时间复杂度和空间复杂度分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

求和变换

给定一大小为 n×nn \times nn×n 的矩阵 MMM,每次变换将 Mi,jM_{i,j}Mi,j 变为当前的 ∑k=0n−1Mi,k+Mk,j\sum_{k=0}^{n-1}M_{i,k}+M_{k,j}k=0n1Mi,k+Mk,j。求原矩阵变换 ttt 次的结果,每个位置的答案对 PPP 取模。
1⩽n⩽1000,0⩽t⩽109,2⩽P⩽1091 \leqslant n \leqslant 1000,0 \leqslant t \leqslant 10^9,2 \leqslant P \leqslant 10^91n1000,0t109,2P109
时间限制1s,空间限制512MB。

n×nn \times nn×n 的矩阵 SSS 满足 Si,j=1S_{i,j}=1Si,j=1,则 MSMSMS 即可得到将行求和后的矩阵。同理 SMSMSM 即为将列求和后的矩阵。设 F(M,t)F(M,t)F(M,t) 表示 MMM 经过 ttt 次变换后的结果,则有 F(M,0)=M,F(M,t)=SF(M,t−1)+F(M,t−1)SF(M,0)=M,F(M,t)=SF(M,t-1)+F(M,t-1)SF(M,0)=M,F(M,t)=SF(M,t1)+F(M,t1)S。发现规律:
F(M,0)=MF(M,0)=MF(M,0)=M
F(M,1)=SM+MSF(M,1)=SM+MSF(M,1)=SM+MS
F(M,2)=S2M+2SMS+MS2F(M,2)=S^2M+2SMS+MS^2F(M,2)=S2M+2SMS+MS2
F(M,3)=S3M+3S2MS+3SMS2+MS3F(M,3)=S^3M+3S^2MS+3SMS^2+MS^3F(M,3)=S3M+3S2MS+3SMS2+MS3
F(M,4)=S4M+4S3MS+6S2MS2+4SMS3+MS4F(M,4)=S^4M+4S^3MS+6S^2MS^2+4SMS^3+MS^4F(M,4)=S4M+4S3MS+6S2MS2+4SMS3+MS4
归纳可得:
F(M,t)=∑i=0t(ti)SiMSt−iF(M,t)= \sum_{i=0}^t \binom{t}{i}S^iMS^{t-i}F(M,t)=i=0t(it)SiMSti
容易发现 S0=I,St=nt−1SS^0=I,S^t=n^{t-1}SS0=I,St=nt1S。设 B=St1MSt2B=S^{t_1}MS^{t_2}B=St1MSt2,根据矩阵乘法的定义:
Bi,l=∑j=0n−1∑k=0n−1nt1−1Si,jMj,knt2−1Sk,l=nt1+t2−2∑j=0n−1∑k=0n−1Mj,kB_{i,l}=\sum_{j=0}^{n-1} \sum_{k=0}^{n-1} n^{t_1-1} S_{i,j} M_{j,k} n^{t_2-1} S_{k,l}=n^{t1+t2-2} \sum_{j=0}^{n-1} \sum_{k=0}^{n-1} M_{j,k}Bi,l=j=0n1k=0n1nt11Si,jMj,knt21Sk,l=nt1+t22j=0n1k=0n1Mj,k
设矩阵 M′M'M 中的任意一位均为 MMM 中所有数的和,得到:
F(M,t)=StM+MSt+∑i=1t−1(ti)nt−2M′=nt−1(SM+MS)+nt−2M′∑i=1t−1(ti)F(M,t)=S^tM+MS^t+\sum_{i=1}^{t-1} \binom{t}{i}n^{t-2} M'=n^{t-1}(SM+MS)+n^{t-2} M' \sum_{i=1}^{t-1} \binom{t}{i}F(M,t)=StM+MSt+i=1t1(it)nt2M=nt1(SM+MS)+nt2Mi=1t1(it)
由于 ∑i=0t(ti)=2t\sum_{i=0}^t \binom{t}{i}=2^ti=0t(it)=2t,因此:
F(M,t)=nt−2(nF(M,1)+(2t−2)M′)F(M,t)=n^{t-2}(nF(M,1)+(2^t-2)M')F(M,t)=nt2(nF(M,1)+

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值