(以下修改指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 }

[atARC111F]Do you like query problems的更多相关文章

  1. hdu 5057 Argestes and Sequence(分块算法)

    Argestes and Sequence Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  2. hdu5057 Argestes and Sequence 分块

    Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Submiss ...

  3. Codeforces Round #260 (Div. 1) D. Serega and Fun 分块

    D. Serega and Fun Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/455/pro ...

  4. Caching Best Practices--reference

    reference:http://java.dzone.com/articles/caching-best-practices There is an irresistible attraction ...

  5. hdu 5057 Argestes and Sequence

    Argestes and Sequence Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  6. BestCoder Round #11 (Div. 2) 题解

    HDOJ5054 Alice and Bob Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  7. HDU5057(分块)

    Argestes and Sequence Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  8. CodeForces - 455D

    Serega loves fun. However, everyone has fun in the unique manner. Serega has fun by solving query pr ...

  9. Neo4j 文档

    Graph Fundamentals 基础 Basic concepts to get you going. A graph database can store any kind of data u ...

随机推荐

  1. Conda 创建和删除虚拟环境

    1.检验当前conda的版本 conda -V C:\Users>conda -V conda 4.10.1 2.conda 常用的命令 查看已有的虚拟环境 C:\Users>conda ...

  2. v72.01 鸿蒙内核源码分析(Shell解析) | 应用窥伺内核的窗口 | 百篇博客分析OpenHarmony源码

    子曰:"苟正其身矣,于从政乎何有?不能正其身,如正人何?" <论语>:子路篇 百篇博客系列篇.本篇为: v72.xx 鸿蒙内核源码分析(Shell解析篇) | 应用窥视 ...

  3. Java(16)修饰符

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201619.html 博客主页:https://www.cnblogs.com/testero ...

  4. Java(21)内部类

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228411.html 博客主页:https://www.cnblogs.com/testero ...

  5. Sequence Model-week1编程题1(一步步实现RNN与LSTM)

    一步步搭建循环神经网络 将在numpy中实现一个循环神经网络 Recurrent Neural Networks (RNN) are very effective for Natural Langua ...

  6. Java:阻塞队列

    Java:阻塞队列 本笔记是根据bilibili上 尚硅谷 的课程 Java大厂面试题第二季 而做的笔记 1. 概述 概念 队列 队列就可以想成是一个数组,从一头进入,一头出去,排队买饭 阻塞队列 B ...

  7. 6月8日 Scrum Meeting

    日期:2021年6月8日 会议主要内容概述: 确定6.9日下午两点到五点集中对接 初步确定主题配色和echarts默认图表颜色 一.进度情况 组员 负责 两日内已完成的工作 后两日计划完成的工作 工作 ...

  8. CanalAdmin搭建Canal Server集群

    CanalAdmin搭建Canal Server集群 一.背景 二.机器情况 三.实现步骤 1.下载canal admin 2.配置canalAdmin 3.初始化canal admin数据库 4.启 ...

  9. Spring 5 中函数式web开发中的swagger文档

    Spring 5 中一个非常重要的更新就是增加了响应式web开发WebFlux,并且推荐使用函数式风格(RouterFunction和 HandlerFunction)来开发WebFlux.对于之前主 ...

  10. Python爬取COVID-19疫情监控实战

    一.项目概述 本项目基于Python.Flask.Echarts打造的一个疫情监控系统,涉及技术: Python网络爬虫 Python与Mysql数据库交互 使用Flask构建web项目 基于Echa ...