[atARC111F]Do you like query problems

(以下修改指1和2类操作,询问指3类操作,操作指修改或询问)

注意到总方案数确定,那么不妨求出答案的期望,再乘上方案数即为答案

(这里从期望的角度考虑只是为了描述方便,并没有太大的实际意义)

设$E(t)$为对某一个位置执行$t$次修改(指对该点)后该位置的期望,通过概率去求,即设$P(t,i)$表示经过$t$次修改后为$i$的概率,那么$E(t)=\sum_{i=0}^{m-1}i\cdot P(t,i)$

初始有$P(0,0)=1$,接下来有$P(t,i)=\frac{\sum_{j=0}^{m-1}P(t,i)+mP(t-1,i)}{2m}=\frac{1}{2m}+\frac{P(t-1,i)}{2}=\frac{1}{m}-\frac{1}{m2^{t}}$($P(t,0)$系数为0,可以不考虑),代入$E(t)$,即可得$E(t)=\sum_{i=1}^{m-1}\frac{i}{m}-\frac{i}{m2^{t}}=(1-\frac{1}{2^{t}})\frac{m-1}{2}$

记$p_{i}=\frac{i(n-i+1)}{n+1\choose 2}$,即第$i$个位置被操作区间包含的概率,那么当经过$t$次修改(指全局)后,即可得第$i$个位置的期望为$h_{t,i}=\frac{m-1}{2}\sum_{j=0}^{t}{t\choose j}p_{i}^{j}(1-p_{i})^{t-j}(1-\frac{1}{2^{j}})=\frac{m-1}{2}(1-(1-\frac{p_{i}}{2})^{t})$(二项式定理合并)

(为了方便,以下记$P=1-\frac{p_{i}}{2}$,即$h_{t,i}=\frac{m-1}{2}(1-P^{t})$)

再加入查询,即经过$t$次操作后第$i$个位置的期望$g_{t,i}=\frac{\sum_{j=0}^{t}{t\choose j}(2m)^{j}h_{j,i}}{(2m+1)^{t}}$(枚举修改次数),将$h_{t,i}$代入后并化简,即可得$g_{t,i}=\frac{m-1}{2}(1-(\frac{2mP+1}{2m+1})^{t})$

考虑第$i$个位置对答案的贡献的期望,即$f_{i}=\frac{p_{i}}{2m+1}\sum_{j=1}^{q}g_{j-1,i}$(枚举产生贡献的操作编号,需要是询问且包含$i$),同样即可得$f_{i}=\frac{p_{i}(m-1)}{2(2m+1)}(q-S(\frac{2mP+1}{2m+1}))$(其中$S(k)=\sum_{i=0}^{q-1}k^{i}=\frac{k^{q}-1}{k-1}$)

最终答案即为$\sum_{i=1}^{n}f_{i}$,时间复杂度由于快速幂,需要$o(n\log_{2}n)$

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define mod 998244353
 4 int n,m,q,ans;
 5 int ksm(int n,int m){
 6     int s=n,ans=1;
 7     while (m){
 8         if (m&1)ans=1LL*ans*s%mod;
 9         s=1LL*s*s%mod;
10         m>>=1;
11     }
12     return ans;
13 } 
14 int inv(int k){
15     return ksm(k,mod-2);
16 }
17 int S(int k){
18     if (k==1)return q;
19     return 1LL*(ksm(k,q)+mod-1)*inv(k-1)%mod;
20 }
21 int main(){
22     scanf("%d%d%d",&n,&m,&q);
23     int s=inv(2*m+1);
24     for(int i=1;i<=n;i++){
25         int p=1LL*i*(n-i+1)%mod*inv(n)%mod*inv(n+1)%mod;
26         int P=mod+1-p,ss=S((2LL*m*P+1)%mod*s%mod);
27         ans=(ans+1LL*p*(m-1)%mod*s%mod*(q+mod-ss))%mod;
28     }
29     s=1LL*n*(n+1)/2%mod*(m+m+1)%mod;
30     ans=1LL*ans*ksm(s,q)%mod;
31     printf("%d",ans);
32 }
View Code

 

posted @ 2021-01-22 09:34  PYWBKTDA  阅读(221)  评论(0编辑  收藏  举报