AC日记——方差 洛谷 P1471
2017-06-04 09:20
363 查看
方差
思路:
线段树;
代码:
思路:
线段树;
代码:
#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*2+size*x*x; sum+=x*size; } }; struct TreeNodeType tree[maxn<<2]; int n,m; double X,Sum,Sum2; inline void in(int &now) { int if_z=1;now=0; char Cget=getchar(); while(Cget>'9'||Cget<'0') { if(Cget=='-') if_z=-1; Cget=getchar(); } while(Cget>='0'&&Cget<='9') { now=now*10+Cget-'0'; 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+1; if(l==r) { scanf("%lf",&tree[now].sum); tree[now].sum2=tree[now].sum*tree[now].sum; return; } tree[now].mid=l+r>>1; build(now<<1,l,tree[now].mid); build(now<<1|1,tree[now].mid+1,r); tree[now].sum=tree[now<<1].sum+tree[now<<1|1].sum; tree[now].sum2=tree[now<<1].sum2+tree[now<<1|1].sum2; } inline void pushdown(int now) { tree[now<<1].updata(tree[now].flag); tree[now<<1|1].updata(tree[now].flag); tree[now].flag=0; } 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<<1,l,r); if(r>tree[now].mid) operation1(now<<1|1,l,r); tree[now].sum=tree[now<<1].sum+tree[now<<1|1].sum; tree[now].sum2=tree[now<<1].sum2+tree[now<<1|1].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<<1,l,r); if(r>tree[now].mid) operation2(now<<1|1,l,r); } int main() { in(n),in(m),build(1,1,n); int op,l,r; while(m--) { in(op),in(l),in(r); if(op==1) scanf("%lf",&X),operation1(1,l,r); if(op==2) Sum=0,operation2(1,l,r),printf("%.4lf\n",Sum/(r-l+1)); if(op==3) { Sum=0,Sum2=0; operation2(1,l,r); X=Sum/(r-l+1); printf("%.4lf\n",(Sum2-Sum*X*2+(r-l+1)*X*X)/(r-l+1)); } } return 0; }
相关文章推荐
- 洛谷 P1471 方差
- AC日记——送花 洛谷 P2073
- AC日记——Dynamic Ranking 洛谷 P2617
- AC日记——餐巾计划问题 洛谷 P1084
- AC日记——[SDOI2017]相关分析 洛谷 P3707
- AC日记——[SDOI2011]消耗战 洛谷 P2495
- AC日记——小魔女帕琪 洛谷 P3802
- AC日记——[HNOI2010]BOUNCE 弹飞绵羊 洛谷 P3203
- AC日记——任务查询系统 洛谷 P3168
- AC日记——软件包管理器 洛谷 P2416
- AC日记——砝码称重 洛谷 P2347
- AC日记——A+B Problem(再升级) 洛谷 P1832
- AC日记——栈 洛谷 P1044
- AC日记——网络最大流 洛谷 P3376
- AC日记——方格取数 洛谷 P1004
- AC日记——小木棍【数据加强版】 洛谷 P1120
- AC日记——封锁阳光大学 洛谷 P1330
- AC日记——I Hate It 洛谷 P1531
- AC日记——过河卒 洛谷 1002
- AC日记——铺地毯 洛谷 P1003(水水水水水~)