当前位置: 首页 > news >正文

快速做网站联系电话/深圳网络营销和推广方案

快速做网站联系电话,深圳网络营销和推广方案,苏州网页制作人才招聘,做书封面的网站题目大意 给出N个数,Q个操作 1、t0时,两个数a,b 表示第a个数加b 2、t1时,三个数a,b,c 表示a~b都加c 3、t2时,两个数a,b 表示a~b的数字和 4、t3时,两个数a,b 表示a~b的数字的方差 方差的定义: 求N个数的方…

题目大意

给出N个数,Q个操作

1、t=0时,两个数a,b 表示第a个数加b
2、t=1时,三个数a,b,c 表示a~b都加c
3、t=2时,两个数a,b 表示a~b的数字和
4、t=3时,两个数a,b 表示a~b的数字的方差

方差的定义:
求N个数的方差,设这N个数的平均数为ave,第i个数为xi
方差=1/n[(x1-ave)2+(x2-ave)2+⋯+(x(n-1)-ave)2+(xn-ave)2]

题目解析

一看到题目,点修改和区间修改,很明显的时线段树

当t=2时,求区间和,也是线段树的常规做法

当t=3时,需要求区间方差

那我们可以试着把方差的计算公式拆分开

首先,方差=1/n[(x1-ave)2+(x2-ave)2+⋯+(x(n-1)-ave)2+(xn-ave)2],我们先不考虑前面的1/n

得:[(x1-ave)2+(x2-ave)2+⋯+(x(n-1)-ave)2+(xn-ave)2]

由完全平方公式,拆开可得:
[(x12+2 *x1*ave+ave2) + (x22+2 *x2*ave+ave2) + ⋯ + (xn-12+2 *xn-1*ave+ave2) + (xn2+2 *xn*ave+ave2)]

化简可得:
(x12+x22+⋯+xn-12+xn2) + (n*ave2) + 2 * ave * (x1+x2+⋯+xn-1+xn)

由此可得:
我们求了区间的平方和,以及数字和,就可以很快的求出这个区间的方差

代码

#include<bits/stdc++.h>
using namespace std;
long long n,q,a1,a2,a3,a4,x,y,S,w,P;
double ave,ans;
int a[100005];
struct A
{long long l,r,w,f,p;
}sum[4000005];
void down(int k)
{sum[k*2].f+=sum[k].f;sum[k*2+1].f+=sum[k].f;sum[k*2].p+=(sum[k*2].r-sum[k*2].l+1)*sum[k].f*sum[k].f+2*sum[k].f*sum[k*2].w;sum[k*2+1].p+=((sum[k*2+1].r-sum[k*2+1].l+1)*sum[k].f*sum[k].f+2*sum[k].f*sum[k*2+1].w);sum[k*2].w+=sum[k].f*(sum[k*2].r-sum[k*2].l+1);sum[k*2+1].w+=sum[k].f*(sum[k*2+1].r-sum[k*2+1].l+1);sum[k].f=0;
}//懒标记 
void add(int k)
{if(sum[k].l>=x&&sum[k].r<=y){sum[k].p+=((sum[k].r-sum[k].l+1)*w*w+2*w*sum[k].w);sum[k].w+=(sum[k].r-sum[k].l+1)*w;sum[k].f+=w;return;}if(sum[k].f) down(k);int m=(sum[k].l+sum[k].r)/2;if(x<=m) add(k*2);if(y>m) add(k*2+1);sum[k].w=sum[k*2].w+sum[k*2+1].w;sum[k].p=sum[k*2].p+sum[k*2+1].p;
}//更新区间和以及平方和 
void find(int rt)
{if(sum[rt].l>=x&&sum[rt].r<=y) {S+=sum[rt].w;return;}if(sum[rt].f) down(rt);int mid=(sum[rt].l+sum[rt].r)/2;if(x<=mid) find(rt*2);if(y>mid) find(rt*2+1);
}//询问区间和 
long long find2(int t)
{if (sum[t].l>=x&&sum[t].r<=y)return sum[t].p;if(sum[t].f) down(t);long long mid=(sum[t].l+sum[t].r)/2,result=0;if(x<=mid) result+=find2(t*2);if(y>mid) result+=find2(t*2+1);return result;
}//询问平方和 
void build(int l,int r,int rt)
{sum[rt].l=l;sum[rt].r=r;if (l==r) {sum[rt].w=a[l];sum[rt].p=sum[rt].w*sum[rt].w;return;}int m=(l+r)>>1;build(l,m,rt*2);build(m+1,r,rt*2+1);sum[rt].w=sum[rt*2].w+sum[rt*2+1].w;sum[rt].p=sum[rt*2].p+sum[rt*2+1].p;
}//建树 
int main()
{cin>>n>>q;for(int i=1;i<=n;i++)cin>>a[i];build(1,n,1);for(int i=1;i<=q;i++){cin>>a1;if(a1==0){cin>>a2>>a4;x=y=a2;w=a4;add(1);	}if(a1==1){cin>>a2>>a3>>a4;x=a2;y=a3;w=a4;add(1);}if(a1==2){cin>>a2>>a3;x=a2;y=a3;S=0;find(1);cout<<S<<endl;}if(a1==3){cin>>a2>>a3;x=a2;y=a3;S=P=0;find(1);long long num=y-x+1;double ave=(double)S/num;P=find2(1);double ans=(double)P-(double)2*ave*S+ave*ave*num;cout<<fixed<<setprecision(10)<<(double)ans/num<<endl;}}
}
http://www.jmfq.cn/news/4740355.html

相关文章:

  • 临清建网站/软文文案案例
  • 福州鼓楼区网站建设/南昌seo排名收费
  • 如何创立自己的网站/地推扫码平台
  • 重庆建站管理系统信息/google网站推广
  • 全国美容网站建设/网络营销推广的概念
  • 做图素材的网站有哪些/怎样做自己的网站
  • 广州做营销型网站建设/网络营销首先要做什么
  • 网站建设公司类型/网站关键词优化方案
  • 怎么做网站解析/镇江网站seo
  • 帮公司做网站运营/关键词优化外包服务
  • 域名购买网站有哪些问题/国际新闻今天
  • 公司创建网站销售/女装标题优化关键词
  • wordpress做个人教学网站/宁波seo外包优化公司
  • 国外企业合作的网站/微信代运营
  • 关于小说网站的一些建设流程/程序员培训机构排名前十
  • 宁波公司网站建设定制服务/广告推广赚钱
  • phpcms 多语言网站/青岛网站seo分析
  • wordpress 优化版/如何做好关键词的优化
  • 网站信息内容建设管理/seo排名软件怎么做
  • 印度电商平台网站建设策划/新冠疫情最新消息
  • 外贸网站建设推广公司价格/怎么样引流顾客到店方法
  • 怎么做旅店网站/市场调研报告1500字
  • 云服务器可以做视频网站吗/长沙靠谱seo优化价格
  • 国务院 门户网站建设要求/软文推广媒体
  • wordpress建个人网站/太原做网站哪家好
  • 网站空间维护/seo关键词排名优化品牌
  • 群晖wordpress设置/郑州百度seo
  • 杭州哪家公司网站做的好/站长之家0
  • 空间网站模板/关键词优化到首页怎么做到的
  • 平板上做网站的软件/关键词搜索优化外包