首页 技术 正文
技术 2022年11月18日
0 收藏 911 点赞 4,750 浏览 1721 个字

方差

思路:

  线段树;

代码:

#include <bits/stdc++.h>
using namespace std;
#define maxn 100005
struct TreeNodeType {
int l,r,mid,size;
double sum,sum2,flag;
inline void updata(double x)
{
flag+=x;
sum2+=sum*x*+size*x*x;
sum+=x*size;
}
};
struct TreeNodeType tree[maxn<<];
int n,m;
double X,Sum,Sum2;
inline void in(int &now)
{
int if_z=;now=;
char Cget=getchar();
while(Cget>''||Cget<'')
{
if(Cget=='-') if_z=-;
Cget=getchar();
}
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
now*=if_z;
}
void build(int now,int l,int r)
{
tree[now].l=l,tree[now].r=r,tree[now].size=r-l+;
if(l==r)
{
scanf("%lf",&tree[now].sum);
tree[now].sum2=tree[now].sum*tree[now].sum;
return;
}
tree[now].mid=l+r>>;
build(now<<,l,tree[now].mid);
build(now<<|,tree[now].mid+,r);
tree[now].sum=tree[now<<].sum+tree[now<<|].sum;
tree[now].sum2=tree[now<<].sum2+tree[now<<|].sum2;
}
inline void pushdown(int now)
{
tree[now<<].updata(tree[now].flag);
tree[now<<|].updata(tree[now].flag);
tree[now].flag=;
}
void operation1(int now,int l,int r)
{
if(tree[now].l>=l&&tree[now].r<=r)
{
tree[now].updata(X);
return;
}
if(tree[now].flag) pushdown(now);
if(l<=tree[now].mid) operation1(now<<,l,r);
if(r>tree[now].mid) operation1(now<<|,l,r);
tree[now].sum=tree[now<<].sum+tree[now<<|].sum;
tree[now].sum2=tree[now<<].sum2+tree[now<<|].sum2;
}
void operation2(int now,int l,int r)
{
if(tree[now].l>=l&&tree[now].r<=r)
{
Sum+=tree[now].sum;
Sum2+=tree[now].sum2;
return;
}
if(tree[now].flag) pushdown(now);
if(l<=tree[now].mid) operation2(now<<,l,r);
if(r>tree[now].mid) operation2(now<<|,l,r);
}
int main()
{
in(n),in(m),build(,,n);
int op,l,r;
while(m--)
{
in(op),in(l),in(r);
if(op==) scanf("%lf",&X),operation1(,l,r);
if(op==) Sum=,operation2(,l,r),printf("%.4lf\n",Sum/(r-l+));
if(op==)
{
Sum=,Sum2=;
operation2(,l,r);
X=Sum/(r-l+);
printf("%.4lf\n",(Sum2-Sum*X*+(r-l+)*X*X)/(r-l+));
}
}
return ;
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,491
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,493
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,294