过了样例,但是全 WA,悬赏 3 个关注
  • 板块P1471 方差
  • 楼主hfjqwq
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/8/25 00:08
  • 上次更新2023/11/3 01:23:30
查看原帖
过了样例,但是全 WA,悬赏 3 个关注
767295
hfjqwq楼主2023/8/25 00:08
#include<bits/stdc++.h>
#define ll long long
#define mid ((l+r)>>1)
#define ls(x) (x<<1)
#define rs(x) (x<<1|1)
const int inf=0x3f3f3f3f,maxn=5e5+7;
using namespace std;
int n,m;
double t[maxn<<2],sa[maxn<<2],sb[maxn<<2]; //sa维护每一个数 sb维护每一个数的平方 
void push_up(int p){
    sa[p]=sa[ls(p)]+sa[rs(p)];
	sb[p]=sb[ls(p)]+sb[rs(p)];
}
void build(int p,int l,int r){
    if(l==r){
    	scanf("%lf",&sa[p]); sb[p]=sa[p]*sa[p]; return;
    }
    build(ls(p),l,mid); build(rs(p),mid+1,r);
    push_up(p);
}
void maketag(int p,int l,int r,int k){
    sb[p]+=2*k*sa[p]+(r-l+1)*k*k;
	sa[p]+=(r-l+1)*k; t[p]+=k;
}
void push_down(int p,int l,int r){
    if(!t[p]) return;
    maketag(ls(p),l,mid,t[p]); maketag(rs(p),mid+1,r,t[p]);
    t[p]=0;
}

double ask_a(int p,int l,int r,int L,int R){
    if(l>R||r<L) return 0;
    if(l>=L&&r<=R) return sa[p];
    push_down(p,l,r);
    return ask_a(ls(p),l,mid,L,R)+ask_a(rs(p),mid+1,r,L,R);
}

double ask_b(int p,int l,int r,int L,int R){
	if(l>R||r<L) return 0;
    if(l>=L&&r<=R) return sb[p];
    push_down(p,l,r);
    return ask_b(ls(p),l,mid,L,R)+ask_b(rs(p),mid+1,r,L,R);
}

void update(int p,int l,int r,int L,int R,int x){
    if(r<L||R<l) return;
    if(L<=l&&r<=R){
        maketag(p,l,r,x); return;
    }
    push_down(p,l,r);
    update(ls(p),l,mid,L,R,x); update(rs(p),mid+1,r,L,R,x);
    push_up(p);
}

int main(){
    scanf("%d%d",&n,&m);
    build(1,1,n);
    while(m--){
        int op,x,y;
        scanf("%d%d%d",&op,&x,&y);
        if(op==2){ // 平均值 
            printf("%.4lf\n",ask_a(1,1,n,x,y)/(y-x+1));
        }
        else if(op==1){ // 区间加 
        	int z; scanf("%d",&z);
        	update(1,1,n,x,y,z);
		}
		else if(op==3){ // 方差  
			double sum1=ask_b(1,1,n,x,y)/(y-x+1),sum2=ask_a(1,1,n,x,y)/(y-x+1); // 方差等于每个数平方的和除以n减去平均数的平方 
			double ans=sum1-sum2*sum2;
			printf("%.4lf\n",ans);
		}
    }
    return 0;
}
2023/8/25 00:08
加载中...