PKUSC 2021

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

求和变换

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

n × n n \times n n×n 的矩阵 S S S 满足 S i , j = 1 S_{i,j}=1 Si,j=1,则 M S MS MS 即可得到将行求和后的矩阵。同理 S M SM SM 即为将列求和后的矩阵。设 F ( M , t ) F(M,t) F(M,t) 表示 M M M 经过 t t t 次变换后的结果,则有 F ( M , 0 ) = M , F ( M , t ) = S F ( M , t − 1 ) + F ( M , t − 1 ) S F(M,0)=M,F(M,t)=SF(M,t-1)+F(M,t-1)S F(M,0)=M,F(M,t)=SF(M,t1)+F(M,t1)S。发现规律:
F ( M , 0 ) = M F(M,0)=M F(M,0)=M
F ( M , 1 ) = S M + M S F(M,1)=SM+MS F(M,1)=SM+MS
F ( M , 2 ) = S 2 M + 2 S M S + M S 2 F(M,2)=S^2M+2SMS+MS^2 F(M,2)=S2M+2SMS+MS2
F ( M , 3 ) = S 3 M + 3 S 2 M S + 3 S M S 2 + M S 3 F(M,3)=S^3M+3S^2MS+3SMS^2+MS^3 F(M,3)=S3M+3S2MS+3SMS2+MS3
F ( M , 4 ) = S 4 M + 4 S 3 M S + 6 S 2 M S 2 + 4 S M S 3 + M S 4 F(M,4)=S^4M+4S^3MS+6S^2MS^2+4SMS^3+MS^4 F(M,4)=S4M+4S3MS+6S2MS2+4SMS3+MS4
归纳可得:
F ( M , t ) = ∑ i = 0 t ( t i ) S i M S t − i F(M,t)= \sum_{i=0}^t \binom{t}{i}S^iMS^{t-i} F(M,t)=i=0t(it)SiMSti
容易发现 S 0 = I , S t = n t − 1 S S^0=I,S^t=n^{t-1}S S0=I,St=nt1S。设 B = S t 1 M S t 2 B=S^{t_1}MS^{t_2} B=St1MSt2,根据矩阵乘法的定义:
B i , l = ∑ j = 0 n − 1 ∑ k = 0 n − 1 n t 1 − 1 S i , j M j , k n t 2 − 1 S k , l = n t 1 + t 2 − 2 ∑ j = 0 n − 1 ∑ k = 0 n − 1 M j , k B_{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 中的任意一位均为 M M M 中所有数的和,得到:
F ( M , t ) = S t M + M S t + ∑ i = 1 t − 1 ( t i ) n t − 2 M ′ = n t − 1 ( S M + M S ) + n t − 2 M ′ ∑ i = 1 t − 1 ( t i ) 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)+nt2M

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值