P6108 [Ynoi2009] rprsvq 积分题解
给 EI 题解写注 qwq。。
化简方差:
=\frac{1}{n}(\sum a_i^2-2\overline {a}\sum a_i+n\overline a^2)\\
=(\frac{1}{n}-\frac{1}{n^2})\sum a_i^2-\frac{\sum_{i\neq j}a_ia_j}{n^2}
\]
前面那个系数 \(\dfrac{1}{n}-\dfrac{1}{n^2}\) 由 \(\sum a_i\) 贡献 \(\dfrac{1}{n}\),由 \(-2\overline {a}\sum a_i\) 贡献 \(-\dfrac{2}{n^2}\),由 \(n\overline a^2\) 贡献 \(\dfrac{1}{n^2}\)。
考虑所有非空子序列。枚举长度(设 \(L=r-l+1\))有:
=\left(\sum_{k=1}^L \binom{L-1}{k-1}(\frac{1}{k}-\frac{1}{k^2})\right)\sum a_i^2-\left(\sum_{k=1}^L \binom{L-2}{k-2}\frac{1}{k^2}\right)\sum_{i\neq j}a_ia_j\\
=\left(\sum_{k=0}^{L-1} \binom{L-1}{k}(\frac{1}{k+1}-\frac{1}{(k+1)^2})\right)\sum a_i^2-\left(\sum_{k=0}^{L-2} \binom{L-2}{k}\frac{1}{(k+2)^2}\right)\sum_{i\neq j}a_ia_j\\
\]
很显然,知道这两个大的括号括起来的东西就可以了。容易知道 \(\sum a_i^2\) 和 \(\sum_{i\neq j}a_ia_j\),其中
\]
据 EI 说,这一类超几何项求和式有某类共性,但是我不知道。
先处理前一半。
=\sum _k\binom{L-1}{k}\int_0^1x^kdx=\int_0^1\sum_k \binom{L-1}{k}x^kdx\\
A_L=\int _0^1(x+1)^{L-1}dx=\frac{(x+1)^L}{L}\bigg|_0^1=\frac{2^L-1}{L}
\]
再次尝试用这个办法干
=\sum_k \binom{L-1}{k}\frac{1}{k+1}\int _0^1x^kdx\\
=\sum_k \binom{L-1}{k}\int_0^1x^k\int_0^1y^kdydx\\
=\int _0^1\int_0^1\sum_k\binom{L-1}{k}x^ky^kdydx\\
=\int_0^1\int_0^1(xy+1)^{L-1}dydx\\
=\int_0^1\frac{(x+1)^L-1}{Lx}dx\\
\]
看起来有点抽象。
=\int_1^2\frac{u^{L+1}-u}{L(u-1)u}du=\int_1^2\frac{u^{L}-1}{L(u-1)}du\\
=\frac{1}{L}\int_1^2\sum _{i=0}^{L-1}u^idu\\
=\frac{1}{L}\sum _{i=1}^{L}\int_0^1(x+1)^{i-1}dx\\
\]
这,就不抽象了吧?
\]
接下来是后半部分。
=\sum _k\binom{L-2}{k}\int_0^1x^{k+1}dx\\
=\int_0^1x\sum_k\binom{L-2}{k}x^kdx\\
C_L=\int _0^1x(x+1)^{L-2}dx\\
=\int_0^1xd\left(\frac{(x+1)^{L-1}}{L-1}\right)\\
=\frac{x(x+1)^{L-1}}{L-1}\bigg|_{0}^1-\int_0^1\frac{(x+1)^{L-1}}{L-1}dx\\
=\frac{2^{L-1}}{L-1}-\frac{1}{L-1}\int_0^1(x+1)^{L-1}dx\\
=\frac{2^{L-1}-A_L}{L-1}
\]
其实后几步可以省略因为没用。
虽然接下来的部分没有新意,但是我还是愿意将过程和结果展示在这里方便直接拿走(谁愿意进行这些体力劳动呢?)
=\sum_{k=0}^{L-2} \binom{L-2}{k}\frac{1}{(k+2)}\int _0^1x^{k+1}dx\\
=\sum_{k=0}^{L-2} \binom{L-2}{k}\int _0^1x^{k+1}\int _0^1y^{k+1}dydx\\
=\int _0^1\int _0^1xy\sum_{k=0}^{L-2} \binom{L-2}{k}x^ky^{k}dydx\\
=\int _0^1\frac{1}{x}\int _0^1xy(xy+1)^{L-2}d(xy)dx\\
=\int_0^1\frac{1}{x}\left(\int_0^xy(y+1)^{L-2}dy\right)dx\\
=\int_0^1\frac{Lx(x+1)^{L-1}-(x+1)^L+1}{xL(L-1)}dx\\
=\int _0^1\frac{(x+1)^{L-1}}{L-1}dx-\frac{1}{(L-1)}\int_0^1\frac{(x+1)^L-1}{Lx}dx\\
=\frac{A_L-B_L}{L-1}
\]
原式等于
\]
// Problem: P6108 [Ynoi2009] rprsvq
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P6108
// Memory Limit: 500 MB
// Time Limit: 1500 ms
// UOB Koala
//
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
using namespace std;
bool mst;
const int maxn=5e6+5,mod=998244353;
namespace IO{
inline char gc(){
static const int Rlen=1<<22|1;static char buf[Rlen],*p1,*p2;
return (p1==p2)&&(p2=(p1=buf)+fread(buf,1,Rlen,stdin),p1==p2)?EOF:*p1++;
}
template<typename T>T get_integer(){
char c;bool f=false;while(!isdigit(c=gc()))f=c=='-';T x=c^48;
while(isdigit(c=gc()))x=((x+(x<<2))<<1)+(c^48);return f?-x:x;
}
inline int gi(){return get_integer<int>();}
inline int get_s(char *s){
int len=0;char c;while(isspace(c=gc()));
while(s[len++]=c,!isspace(c=gc())&&c!=EOF);
s[len]=0;return len;
}
template<typename T>T get_float(){
char c;bool f=false;while(!isdigit(c=gc()))f=c=='-';T x=c^48;
while(isdigit(c=gc()))x=(x*10)+(c^48);if(c!='.')return f?-x:x;
T y=1.;while(isdigit(c=gc()))x+=(y/=10)*(c^48);return f?-x:x;
}
char obuf[(int)(4e7+7)],*oh=obuf;
inline void prt(char c){*oh++=c;}
inline void prt(const char *s){
while(*s)*oh++=*s++;
}
template<typename T>void prt(T a){
static char ch[23];int tl=0;
if(a<0)*oh++='-',a=-a;
do ch[++tl]=a%10;while(a/=10);
while(tl)*oh++=ch[tl--]^48;
}
template<typename T,class ...Args>
void prt(T a,Args...args){
prt(a),prt(args...);
}
struct obuf_flusher{
~obuf_flusher(){fwrite(obuf,1,oh-obuf,stdout);}
}Flusher;
}
using namespace IO;
int qp(int a,int b){
if(b==0)return 1;
int T=qp(a,b>>1);T=1ll*T*T%mod;
if(b&1)return 1ll*T*a%mod;
return T;
}
#define ls (k<<1)
#define rs (k<<1|1)
#define mid ((l+r)>>1)
int xds[maxn<<2],xds2[maxn<<2],add[maxn<<2];
int A[maxn],B[maxn],D[maxn],n,m;
void pushup(int k){
xds[k]=(xds[ls]+xds[rs])%mod;
xds2[k]=(xds2[ls]+xds2[rs])%mod;
}
void ADD(int k,int l,int r,int v){
int L=r-l+1;
int s1=(xds[k]+1ll*L*v%mod)%mod;
int s2=(xds2[k]+2ll*xds[k]*v%mod+1ll*L*v%mod*v%mod)%mod;
xds[k]=s1,xds2[k]=s2;
(add[k]+=v)%=mod;
}
void pushdown(int k,int l,int r){
if(!add[k])return ;
ADD(ls,l,mid,add[k]);
ADD(rs,mid+1,r,add[k]);
add[k]=0;
}
void modify(int k,int l,int r,int x,int y,int v){
if(x<=l&&r<=y)return ADD(k,l,r,v);
pushdown(k,l,r);
if(x<=mid)modify(ls,l,mid,x,y,v);
if(mid<y)modify(rs,mid+1,r,x,y,v);
pushup(k);
}
#define PI pair<int,int>
PI operator +(const PI &a,const PI &b){
return {(a.first+b.first)%mod,(a.second+b.second)%mod};
}
PI query(int k,int l,int r,int x,int y){
if(x<=l&&r<=y)return {xds[k],xds2[k]};
PI res={0,0};
pushdown(k,l,r);
if(x<=mid)res=res+query(ls,l,mid,x,y);
if(mid<y)res=res+query(rs,mid+1,r,x,y);
return res;
}
bool med;
int fac[maxn],ifac[maxn],inv[maxn];
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
// cerr<<(&mst-&med)/1024.0/1024.0<<endl;
n=gi(),m=gi();
fac[0]=1;
for(int i=1;i<=n;i++){
fac[i]=1ll*fac[i-1]*i%mod;
}
ifac[n]=qp(fac[n],mod-2);
for(int i=n-1;i>=0;i--)ifac[i]=1ll*(i+1)*ifac[i+1]%mod;
for(int i=1;i<=n;i++)inv[i]=1ll*ifac[i]*fac[i-1]%mod;
int p2=1;
for(int i=1;i<=n;i++){
p2=p2*2%mod;
A[i]=1ll*(p2-1+mod)%mod*inv[i]%mod;
}
int S=0;
for(int i=1;i<=n;i++){
(S+=A[i])%=mod;
B[i]=1ll*inv[i]*S%mod;
D[i]=1ll*(A[i]-B[i]+mod)%mod*inv[i-1]%mod;
}
for(int i=1;i<=m;i++){
int tp,x,y,v;
tp=gi(),x=gi(),y=gi();
if(tp==1){
v=gi();
modify(1,1,n,x,y,v);
}else{
int L=y-x+1;
PI G=query(1,1,n,x,y);
int s1=G.second,s2=(1ll*G.first*G.first-G.second+mod)%mod;
int res=(1ll*(A[L]-B[L]+mod)%mod*s1%mod-1ll*D[L]*s2%mod+mod)%mod;
prt(res,"\n");
}
}
return 0;
}
P6108 [Ynoi2009] rprsvq 积分题解的更多相关文章
- poj 1390 区间dp
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5035 Accepted: 2065 Descriptio ...
- HDU-6290 奢侈的旅行 (Dijkstra+堆优化)
高玩小Q不仅喜欢玩寻宝游戏,还喜欢一款升级养成类游戏.在这个游戏的世界地图中一共有nn个城镇,编号依次为11到nn.这些城镇之间有mm条单向道路,第ii 条单项道路包含四个参数ui,vi,ai,biu ...
- 2018HPU暑期集训第四次积分训练赛 K - 方框 题解(图形打印)
思路分析:题目已经明确透露了这道题的解法:就是画框.当 输入的边长 的话,就表示可以在内层继续嵌套一个方框.废话就不多说了,直接上代码吧! 代码如下: #include <iostream&g ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- HDU 5826 physics (积分推导)
physics 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5826 Description There are n balls on a smoo ...
- HDU 2493 Timer 数学(二分+积分)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2493 题意:给你一个圆锥,水平放置,圆锥中心轴与地面平行,将圆锥装满水,在圆锥某一表面开一个小洞,流出来 ...
- HDU1071 The area 【积分】
The area Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛题解&&源码【A,水,B,水,C,水,D,快速幂,E,优先队列,F,暴力,G,贪心+排序,H,STL乱搞,I,尼姆博弈,J,差分dp,K,二分+排序,L,矩阵快速幂,M,线段树区间更新+Lazy思想,N,超级快速幂+扩展欧里几德,O,BFS】
黑白图像直方图 发布时间: 2017年7月9日 18:30 最后更新: 2017年7月10日 21:08 时间限制: 1000ms 内存限制: 128M 描述 在一个矩形的灰度图像上,每个 ...
- 【自适应辛普森积分】hdu1724 Ellipse
Ellipse Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- SDOI2017 Round2 详细题解
这套题实在是太神仙了..做了我好久...好多题都是去搜题解才会的 TAT. 剩的那道题先咕着,如果省选没有退役就来填吧. 「SDOI2017」龙与地下城 题意 丢 \(Y\) 次骰子,骰子有 \(X\ ...
随机推荐
- Windows系统下PhpStorm+Xdebug安装与调试
环境说明: 系统:Windows10 PhpStorm:2019.3.2 PHP版本:7.3.21 Xdebug版本 :2.7.2 一.Xdebug介绍 官网地址:https://xdebug.org ...
- 轻量数据库管理工具之adminer
github: https://github.com/vrana/adminer 官方文档:https://www.adminer.org/#download Supports: MySQL, Mar ...
- vue之项目部署
一.将vue项目打包同步文件到远程服务器 1. 打包 默认情况下,使用vue-cli创建的项目,package.json里的script应该已经配置了build指令,直接执行yarn build 或者 ...
- ant 组件全局设置中文 vue
//引入中文组件import zhCN from 'ant-design-vue/es/locale/zh_CN';//定义 const locale = zhCN //包裹根组件 <a- ...
- Qt 指定 so库 运行时路径
在Qt的pro文件最后添加运行时so库路径: QMAKE_RPATHDIR += /home/pi/qt5 注意,必须是绝对路径,相对路径无效(因为在pro文件中,相对路径是相对于项目路径)
- RabbitMQ 快速入门
RabbitMQ 快速入门 官网:https://www.rabbitmq.com/ 入门教程:https://www.rabbitmq.com/tutorials 最新版本:4.0.2 版本参考:J ...
- 痞子衡嵌入式:MCUXpresso IDE下C++源文件中嵌套定义的复合数据类型命名空间认定
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下C++源文件中嵌套定义的复合数据类型命名空间认定. 痞子衡之前写过一篇文章 <MCUXpresso ...
- 腾讯云TKE-PV使用COS存储案例:容器目录权限问题
背景 在TKE的集群中创建工作负载并把某一个对应的cos桶的根目录挂载到/data目录,在镜像构建的时候有把/data目录设置权限为755,但是运行容器后成功挂载cos桶的根目录到/data/目录,发 ...
- 第36次ccf-csp题解(思维)
比赛链接 https://sim.csp.thusaac.com/contest/36/home 比赛感受 这会刚打完上海icpc,比起区域赛的题,这个简单太多了. 感受还不错,写的很顺手.除了第 ...
- mapstruct坑:Internal error in the mapping processor: java.lang.NullPointerException at org.mapstruct.
错误描述 项目中如果使用了mapstruct框架,在使用Idea新版本后,启动会报错! Internal error in the mapping processor: java.lang.NullP ...