题解:P1471 方差

news/2025/11/28 11:18:15/文章来源:https://www.cnblogs.com/Noivelist/p/19281384

【题目传送门】

一眼分块能做,然后就来开始做。狠狠地做。

构造

我们考虑根号分治,对于每个块我们开:当前的数值和 \(sum1\),当前的数值平方的和 \(sum2\),当前的数值的 \(\operatorname {lazy}\) 数组。
这道题最阴险的地方是它的输入不是全部整数,但是样例给的是正整数,然后我给我数组全部开的 \(\operatorname {int}\) 类型,听取 WA 声一片。

修改

  • 我们对于散块直接暴力处理,主要是不要忘了更新 \(sum1、sum2\)
  • 我们对于整块的处理就更加直接,直接叠加到 \(\operatorname{lazy}\) 里面就好。

平均值查询

通过 \(sum1+tag\times len\) 直接可以得出。

方差查询

我们要开始推式子了。
我们求方差的式子是:

\[\begin{equation} \begin{split} len=r-l+1,\\ s^2&=\frac{\sum^{r}_{i=l}(\ x_i\ -\bar{\ x\ })^2}{len} \\&=\frac{\sum^{r}_{i=l}(x_i^2\ -\ 2\cdot\bar{\ x\ }\cdot x_i\ +\ \bar{\ x\ }^2)}{len}\\&=\frac{\sum^{r}_{i=l}x_i^2}{len}\ -2\cdot\bar{\ x\ }\cdot\frac{\sum^{r}_{i=l}x_i}{len}\ +\ \bar{\ x\ }\cdot\frac{\sum^{r}_{i=l}\bar{\ x\ }}{len}\\&=\frac{\sum^{r}_{i=l}x_i^2}{len}\ -2\cdot\bar{\ x\ }^2\ +\ \bar{\ x\ }^2\\&=\frac{\sum^{r}_{i=l}x_i^2}{len}\ -\bar{\ x\ }^2 \end{split} \end{equation} \]

也就是我们要知道某个区间的方差只需要知道改区间的平方和以及平均数就好了,显然,平均数可以直接套用操作 \(1\) 前面我们写的代码。
我们由于这个 \(lazy\_tag\) (下称 \(tag\))存在,显然不是很好直接处理这个平方和的式子,但是不用 \(tag\) 又不行,那我们只能继续推式子寻找破局之道了(这里的 \(tag\) 设为 \(k\)):

\[\begin{equation} \begin{split} sum^2&=\sum_{i=l}^{r}(x_i+k)\\&=\sum^{r}_{i=l}x_i^2\ +\ 2k\cdot\sum^r_{i=l}x_i\ +\ nk^2 \end{split} \end{equation} \]

秒杀,下面是代码。

\(\mathcal{CODE}\)

#include<bits/stdc++.h>
using namespace std;
#define itn int
#define reaD read
#define int long long
inline void read(int &x){x=0;int p=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')p=-1;ch=getchar();}while(isdigit(ch)){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}x*=p;
}
void write(int x){if(x<0){putchar('-');x*=-1;}if(x<10){putchar(x+48);return;}write(x/10);putchar(x%10+48);
}
const int N=1e5+1000,M=800;
int n,m,pos[N],L[M],R[M],cnt,len;
double tag[M],sum1[M],sum2[M],a[N];void init(){len=(int)sqrt(n);cnt=(n-1)/len+1;for(int i=1;i<=n;i++){pos[i]=(i-1)/len+1;}for(int i=1;i<=cnt;i++){L[i]=(i-1)*len+1;R[i]=min(n,i*len);for(int j=L[i];j<=R[i];j++){sum1[i]+=a[j];sum2[i]+=a[j]*a[j];}}
}void catter(int l,int r,double c){for(int i=l;i<=r;i++){sum2[pos[l]]+=(a[i]+c)*(a[i]+c)-a[i]*a[i];a[i]+=c;}sum1[pos[l]]+=1.0*(r-l+1)*c;
}void pre_block(int id,double c){tag[id]+=c;
}void update(int l,int r,double c){if(pos[l]==pos[r]){catter(l,r,c);return;}catter(l,R[pos[l]],c);catter(L[pos[r]],r,c);for(int i=pos[l]+1;i<pos[r];i++){pre_block(i,c);}return;
}double query_catter1(int l,itn r){double res=0;for(int i=l;i<=r;i++){res+=a[i];}res+=(r-l+1)*tag[pos[l]];return res;
}double query_block1(int id){double res=0;res+=sum1[id];res+=(R[id]-L[id]+1)*tag[id];return res;
}double query1(int l,int r){if(pos[l]==pos[r]){double res=query_catter1(l,r);return 1.0*res/(r-l+1);}double res=0;res+=query_catter1(l,R[pos[l]]);res+=query_catter1(L[pos[r]],r);for(int i=pos[l]+1;i<pos[r];i++){res+=query_block1(i);}return res/(r-l+1);
}double query_catter2(int l,int r){double res=0;for(int i=l;i<=r;i++){res+=(a[i]+tag[pos[l]])*(a[i]+tag[pos[l]]);}return res;
}double query_block2(int id){double res=0;res+=sum2[id];res+=2*tag[id]*sum1[id];res+=(1.0*R[id]-L[id]+1)*tag[id]*tag[id];return res;
}double query2(int l,int r){if(pos[l]==pos[r]){double res1=query_catter2(l,r);double res2=query_catter1(l,r);// cout<<"res1:"<<res1<<" res2:"<<res2<<endl;double ans=1.0*res1/(r-l+1);ans-=(res2/(r-l+1))*(res2/(r-l+1));return ans;}double res1=0,res2=0;res1+=query_catter2(l,R[pos[l]]);res1+=query_catter2(L[pos[r]],r);res2+=query_catter1(l,R[pos[l]]);res2+=query_catter1(L[pos[r]],r);for(int i=pos[l]+1;i<pos[r];i++){res1+=query_block2(i);res2+=query_block1(i);}double ans=res1/(r-l+1);ans-=(res2/(r-l+1))*(res2/(r-l+1));// cout<<"res1:"<<res1<<" res2:"<<res2<<endl;return ans;
}main(void){// ios::sync_with_stdio(false);// cin.tie(nullptr);// cout.tie(nullptr);read(n);read(m);for(int i=1;i<=n;i++){cin>>a[i];}// for(int i=1;i<=n;i++){// printf("%.2lf\n",a[i]);// }init();for(int i=1,top,l,r;i<=m;i++){read(top);double c;if(top==1){read(l);read(r);cin>>c;update(l,r,c);}if(top==2){read(l);read(r);printf("%.4lf\n",query1(l,r));}if(top==3){read(l);read(r);printf("%.4lf\n",query2(l,r));}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/979477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025英国留学中介哪个最好

2025英国留学中介哪个最好一、2025年英国留学中介如何选择?作为从业十余年的国际教育规划师,我常被学生和家长询问:"2025年申请英国留学,哪家中介最值得信赖?"这个问题背后反映的是对信息真实性和服务专…

2025 年 11 月中国水泵厂家权威推荐榜:消防/多级/自吸/磁力/排污/真空/离心/卧式水泵全品类实力解析与高效选购指南

2025 年 11 月中国水泵厂家权威推荐榜:消防/多级/自吸/磁力/排污/真空/离心/卧式水泵全品类实力解析与高效选购指南 一、中国水泵行业发展趋势与市场格局 随着工业4.0时代的深入发展,中国水泵行业正经历着前所未有的…

2025年质量好的道路景观亮化工程优质企业榜单

2025年质量好的道路景观亮化工程优质企业榜单行业背景与市场趋势 随着城市化进程的加快和夜间经济的蓬勃发展,道路景观亮化工程已成为城市建设的重要组成部分。高质量的亮化工程不仅能提升城市形象,还能优化夜间出行…

2025 年纸盖机成型机权威榜单:纸杯机、制杯机、全伺服纸杯机、纸碗机、纸盖机、纸咖啡杯机、超声波纸杯机、纸盘机智能化制造设备优选

在全球环保包装政策趋严与消费升级的双重驱动下,纸制品机械行业正经历从“规模扩张”到“技术深耕”的转型。作为食品、医疗等领域的关键生产设备,纸盖机厂家的技术实力直接决定下游企业的产能与成本竞争力。2025年,…

AI时代资料收录的理论建构与实践逻辑

在数字技术迅猛发展的当下,人工智能(AI)以其强大的数据处理、模式识别和自主学习能力,正深刻重塑着信息生产、传播与利用的全链条。资料收录作为信息管理的基础环节,承担着数据资源积累、价值筛选与有序化组织的核…

2025 年 11 月热回收设备厂家权威推荐榜:热回收转轮、热管热回收、三维热管、U型热管、分解式乙二醇及烟气余热回收系统高效节能解决方案

2025年11月热回收设备厂家权威推荐榜:热回收转轮、热管热回收、三维热管、U型热管、分解式乙二醇及烟气余热回收系统高效节能解决方案 随着全球能源转型进程加速,工业领域节能降耗需求日益迫切,热回收技术作为提升能…

rust语言Drop特征

在 Rust 语言中,Drop trait(特征)是一个至关重要的概念,它是 Rust RAII (资源获取即初始化) 模型的核心。它定义了当一个值离开作用域时应该执行的清理逻辑。1. Drop trait 的作用 Drop trait 的主要作用是资源管理…

AssemblyLoadContext 的研究笔记

关于 .NET AssemblyLoadContext 的研究笔记public class MyAssemblyLoadContext : AssemblyLoadContext{private readonly AssemblyDependencyResolver _resolver;public MyAssemblyLoadContext(string pluginDllPath)…

2025年11月营销智能体推荐榜单:基于市场数据的权威分析与选择指南

在数字化营销日益成为企业核心战略的今天,越来越多的市场决策者开始寻求更智能、高效的解决方案。营销智能体作为人工智能技术在营销领域的重要应用,能够帮助企业实现从用户洞察到策略执行的全流程优化。对于营销总监…

2025年度中频炉靠谱厂家排名:500公斤中频炉/铝壳中频炉

中频感应熔炼设备是铸造、锻造、冶炼等行业的核心生产工具,其稳定性、能耗表现与售后服务直接决定企业的生产效率与运营成本。2025年,我们结合设备性能(节能性、控温精度、工艺适配性)、客户口碑(故障率反馈、售后…

2025 年 11 月超声设备厂家权威推荐榜:覆盖河北、山西、辽宁、江苏、浙江、山东、广东等区域,精准成像与高效诊断的行业优选

2025 年 11 月超声设备厂家权威推荐榜:覆盖河北、山西、辽宁、江苏、浙江、山东、广东等区域,精准成像与高效诊断的行业优选 超声检测技术作为现代工业质量控制的核心手段,在材料科学、航空航天、能源电力等领域发挥…

Gerrit新增标签

在project.config 中新增 Self-Test标签配置如下:[label "Self-Test"]branch = refs/heads/test_branchfunction = PatchSetLockdefaultValue = 0value = -1 Failsvalue = 0 No scorevalue = +1 Verifiedcop…

2025CMDB 厂商选型攻略:从全栈纳管到一体化运维,企业级配置管理核心指南

文章围绕企业对CMDB全栈纳管、工具联动等核心诉求,对比主流配置管理厂商产品能力与适配场景,结合企业类型、IT架构给出分层选型策略,并解答全栈与多云管理区别等问题,为企业提供CMDB厂商参考。01 引言 在企业数字化…

2025 年 11 月工业气体检测设备厂家权威推荐榜:密闭采样器、气体报警器、气体探测器、在线气体分析仪,精准监测与安全防护首选

2025 年 11 月工业气体检测设备厂家权威推荐榜:密闭采样器、气体报警器、气体探测器、在线气体分析仪,精准监测与安全防护首选 工业气体检测设备作为现代工业生产过程中不可或缺的安全保障装置,在化工、石油、电力、…

2025年质量好的同步反弹缓冲托底轨/缓冲托底轨热门厂家推荐榜单

2025年质量好的同步反弹缓冲托底轨/缓冲托底轨热门厂家推荐榜单行业背景与市场趋势随着家居五金行业的快速发展,缓冲托底轨作为现代家具制造中不可或缺的功能性配件,市场需求持续增长。2025年,全球家具五金市场规模…

2025 年超声波清洗设备厂家最新推荐榜,聚焦技术实力与市场口碑深度解析及优质品牌筛选龙门式 / 全自动 / 多臂式 / 履带式 / 通过式超声波清洗设备推荐

引言 当前工业清洗领域对超声波设备的需求持续攀升,设备性能与品牌可靠性成为企业采购核心考量。国际清洗设备协会(International Cleaning Equipment Association)2024 年度测评报告显示,全球超声波清洗设备市场合…

2025年知名的工程液压油缸/一顺液压油缸最新TOP品牌厂家排行

2025年知名的工程液压油缸/一顺液压油缸TOP品牌厂家排行行业背景与市场趋势液压油缸作为工程机械、工业设备及自动化系统的核心动力部件,其市场需求持续增长。随着中国制造业向高端化、智能化转型,液压油缸行业也迎来…

2025 年 11 月电动牙刷品牌权威推荐榜:声波/旋转/磁悬浮/叠振/扫振/旋振/智能/便携/儿童/成人全系列深度测评与选购指南

2025 年 11 月电动牙刷品牌权威推荐榜:声波/旋转/磁悬浮/叠振/扫振/旋振/智能/便携/儿童/成人全系列深度测评与选购指南 随着口腔健康意识的提升和消费升级趋势的加速,电动牙刷行业正迎来前所未有的发展机遇。根据最…

2025年比较好的反弹钢珠轨厂家推荐及选择指南

2025年比较好的反弹钢珠轨厂家推荐及选择指南行业背景与市场趋势随着家居五金行业的快速发展,反弹钢珠轨作为现代家具制造中不可或缺的功能性配件,市场需求持续增长。2025年,随着智能家居和定制家具的普及,对高品质…

2025上海留学中介十大排名

2025上海留学中介十大排名一、2025年上海留学中介如何选择?随着2025年留学申请季的临近,许多上海学生和家长在搜索引擎上高频查询“上海留学中介十大排名”、“2025年上海留学中介哪家可靠”等问题。作为从业12年的国…