[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 }
[atARC111F]Do you like query problems的更多相关文章
- hdu 5057 Argestes and Sequence(分块算法)
Argestes and Sequence Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- hdu5057 Argestes and Sequence 分块
Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Submiss ...
- 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 ...
- Caching Best Practices--reference
reference:http://java.dzone.com/articles/caching-best-practices There is an irresistible attraction ...
- hdu 5057 Argestes and Sequence
Argestes and Sequence Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- BestCoder Round #11 (Div. 2) 题解
HDOJ5054 Alice and Bob Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- HDU5057(分块)
Argestes and Sequence Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- CodeForces - 455D
Serega loves fun. However, everyone has fun in the unique manner. Serega has fun by solving query pr ...
- Neo4j 文档
Graph Fundamentals 基础 Basic concepts to get you going. A graph database can store any kind of data u ...
随机推荐
- 极简SpringBoot指南-Chapter03-基于SpringBoot的Web服务
仓库地址 w4ngzhen/springboot-simple-guide: This is a project that guides SpringBoot users to get started ...
- 开发函数计算的正确姿势——OCR 服务
作者 | 杜万(倚贤) 阿里云技术专家 简介 首先介绍下在本文出现的几个比较重要的概念: OCR(光学字符识别):光学字符识别(Optical Character Recognition, OCR)是 ...
- DistSQL:像数据库一样使用 Apache ShardingSphere
Apache ShardingSphere 5.0.0-beta 深度解析的第一篇文章和大家一起重温了 ShardingSphere 的内核原理,并详细阐述了此版本在内核层面,特别是 SQL 能力方面 ...
- 其他css属性和特性
其他css属性和特性 设置元素的颜色和透明度 下表列出了这些属性. 颜色相关属性 属 性 说 明 值 color 设置元素的前景色 <颜色> opacity 设置颜色的透明度 <数值 ...
- 2020.12.14--Codeforces Round #104 (Div.2)补题
C - Lucky Conversion CodeForces - 146C Petya loves lucky numbers very much. Everybody knows that luc ...
- DM8数据库单机安装
一.系统概要 表1 部署情况一览表 操作系统 Windows10 数据库版本 DM8(开发版) 数据库类型 单机 磁盘挂载 无 Key信息 无 二.操作系统信息检查 2.1 操作系统版本 [root@ ...
- 移动端 h5 uniapp 读,写,删本地文件或sd文件
移动端 h5 uniapp 读,写,删本地文件或sd文件 应用场景: 当我们需要做离线应用或者是加载本地文件时使用到此方法.(本篇文章给大家分享访问app私有文件目录,系统公共目录,sd外置存储的文件 ...
- 【二食堂】Beta - Scrum Meeting 8
Scrum Meeting 8 例会时间:5.22 20:00~20:10 进度情况 组员 当前进度 今日任务 李健 1. UI优化已经完成,顺带修复了一点小bug.issue 1. 文本导入.保存部 ...
- OO_JAVA_表达式求导_单元总结
OO_JAVA_表达式求导_单元总结 这里引用个链接,是我写的另一份博客,讲的是设计层面的问题,下面主要是对自己代码的单元总结. 程序分析 (1)基于度量来分析自己的程序结构 第一次作业 程序结构大致 ...
- 关于string转换为wstring问题
方法一:需要调用windows的api函数进行转换,在vs2017上试验转换成功 #ifdef _MSC_VER #include <Windows.h> #endif // _MSC_V ...