Luogu P1471 方差 线段树
那是上上周。。。也是重构了四遍。。。后来GG了。。。今天又拾起,搞了搞终于过了。。。
好吧就是个线段树,公式懒得推了https://www.cnblogs.com/Jackpei/p/10693561.html大致差不错
#include<iostream>
#include<cstdio>
#define R register int
#define ls (tr<<1)
#define rs (tr<<1|1)
using namespace std;
int n,m;
double sum[],po[],tg[];
inline void upd(int tr){sum[tr]=sum[ls]+sum[rs]; po[tr]=po[ls]+po[rs];}
inline void build(int tr,int l,int r) {
if(l==r) {scanf("%lf",&sum[tr]),po[tr]=sum[tr]*sum[tr]; return ;} R md=l+r>>;
build(ls,l,md),build(rs,md+,r); upd(tr);
}
inline void change(int tr,int l,int r,double d) {po[tr]+=d*(d*(r-l+)+2.0*sum[tr]),sum[tr]+=(r-l+)*d;}
inline void spread(int tr,int l,int r) { R md=l+r>>;
if(tg[tr]) change(ls,l,md,tg[tr]),change(rs,md+,r,tg[tr]),tg[ls]+=tg[tr],tg[rs]+=tg[tr],tg[tr]=;
}
inline void update(int tr,int l,int r,int LL,int RR,double d){
if(LL<=l&&r<=RR) {tg[tr]+=d,change(tr,l,r,d);return;} spread(tr,l,r); R md=l+r>>;
if(LL<=md) update(ls,l,md,LL,RR,d); if(RR>md) update(rs,md+,r,LL,RR,d); upd(tr);
}
inline double query1(int tr,int l,int r,int LL,int RR){
if(LL<=l&&r<=RR) return sum[tr]; spread(tr,l,r); R md=l+r>>; register double ret=;
if(LL<=md) ret+=query1(ls,l,md,LL,RR); if(RR>md) ret+=query1(rs,md+,r,LL,RR); return ret;
}
inline double query2(int tr,int l,int r,int LL,int RR){
if(LL<=l&&r<=RR) return po[tr]; spread(tr,l,r); R md=l+r>>; register double ret=;
if(LL<=md) ret+=query2(ls,l,md,LL,RR); if(RR>md) ret+=query2(rs,md+,r,LL,RR); return ret;
}
inline void solve1(int l,int r){printf("%.4lf\n",query1(,,n,l,r)/(double)(r-l+));}
inline void solve2(int l,int r){
double ave=query1(,,n,l,r)/(double)(r-l+),x=query2(,,n,l,r),s=query1(,,n,l,r);
printf("%.4lf\n",(x+(double)(r-l+)*ave*ave-2.0*s*ave)/(double)(r-l+));
}
signed main(){
scanf("%d%d",&n,&m); build(,,n);
for(int i=;i<=m;++i){ R k,l,r; register double d;
scanf("%d%d%d",&k,&l,&r);
if(k==) scanf("%lf",&d),update(,,n,l,r,d);
else if(k==) solve1(l,r); else solve2(l,r);
}
}
2019.04.22 唉QAQ...
Luogu P1471 方差 线段树的更多相关文章
- Luogu P1471 方差
题目传送门 开了十倍空间才过是什么鬼?该不会我线段树炸了吧-- 细思极恐 平均数都会求,维护区间和,到时候除一下就好了. 方差的求法如下 (用的Luogu的图片) 因为要维护一个平方,我们可以考虑使用 ...
- [Luogu] 可持久化线段树 1(主席树)
https://www.luogu.org/problemnew/show/P3834 #include<cstdio> #include<iostream> #include ...
- Luogu P5280 [ZJOI2019]线段树
送我退役的神题,但不得不说是ZJOIDay1最可做的一题了 先说一下考场的ZZ想法以及出来后YY的优化版吧 首先发现每次操作其实就是统计出增加的节点个数(原来的不会消失) 所以我们只要统计出线段树上每 ...
- 【题解】Luogu P1471 方差
原题传送门 简单进行推导之后,就能发现很妙的结论 用线段树维护区间和,区间平方和就珂以算出结果 #include <bits/stdc++.h> #define db double #de ...
- luogu 1712 区间(线段树+尺取法)
题意:给出n个区间,求选择一些区间,使得一个点被覆盖的次数超过m次,最小的花费.花费指的是选择的区间中最大长度减去最小长度. 坐标值这么大,n比较小,显然需要离散化,需要一个技巧,把区间转化为半开半闭 ...
- Luogu P3960 列队 线段树
题面 线段树入门题. 我们考虑线段树来维护这个矩阵. 首先我们先定n+1棵线段树前n棵维护每行前m-1个同学中没有离队过的同学,还有一棵维护第m列中没有离队过的同学.再定n+1棵线段树前n棵线段树维护 ...
- luogu P2073 送花 线段树
思路&心路 一眼认定沙比提 写的比较慢,写了1小时吧 开心的交上去 卧槽,只有20? 不服不服,拿着题解的代码去对拍 Emma,<100没问题 100000数据错了,还只是错了一个数据 ...
- 【洛谷】【线段树】P1471 方差
[题目背景:] 滚粗了的HansBug在收拾旧数学书,然而他发现了什么奇妙的东西. [题目描述:] 蒟蒻HansBug在一本数学书里面发现了一个神奇的数列,包含N个实数.他想算算这个数列的平均数和方差 ...
- 2018.08.16 洛谷P1471 方差(线段树)
传送门 线段树基本操作. 把那个方差的式子拆开可以发现只用维护一个区间平方和和区间和就可以完成所有操作. 同样区间修改也可以简单的操作. 代码: #include<bits/stdc++.h&g ...
随机推荐
- XMPP协议相关基础概念(Strophe学习笔记)
相关资料: XMPP官网http://xmpp.org/xmpp-software/libraries/ nginx的转发配置http://mineral.iteye.com/blog/448260 ...
- while 用法 for 循环的总结
格式化输出.%s %d # name = input('请输入名字:') # age = input('请输入年龄:') # sex = input('请输入性别:') # # msg = '我的名字 ...
- HDU 4348(主席树 标记永久化)
题面一看就是裸的数据结构题,而且一看就知道是主席树... 一共四种操作:1:把区间[l, r]的数都加上d,并且更新时间.2:查询当前时间的区间和.3:查询历史时间的区间和.4:时光倒流到某个时间. ...
- SQLServer+.net 事务锁表问题
最近操作Sqlserver遇到一个锁表问题.找了好久才搞明白原因和解决办法. 故障现象: 每次启动事务后,执行了删除或者修改操作以后,再执行查询操作就锁表. 解决过程: 1:最初以为SQLServer ...
- TortoiseSVN客户端安装遇到的问题汇总
在windows server 2003版本上安装32位SVN客户,提示以下错误 1:无法通过windows installer服务安装此安装程序包” 这时需要安装更新的windows install ...
- ROS Learning-023 (提高篇-001) 准备工作 --- 安装一些必要的软件包
ROS 提高篇-001 - 准备工作 - 安装一些必要的软件 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04.4 LTS ROS 版本 ...
- Windows系统 安装 Qt 5.7.0
Windows系统 安装 Qt 5.7.0 我们的电脑系统:Windows 10 64位 Qt5 软件:Qt 5. 7. 0 下载 Qt 5.7.0 软件 在这个网站里面,下载:Qt 5.7.0 fo ...
- li ol ul是什么的简写?
为了方便理解知识,我通常会对一些英语简写追根溯源,在火狐开发者社区里面找到了一些资料. li是 list item的简写不是list的简写 ol是ordered list的简写 ul是unordere ...
- pentaho和spark-sql对接
pentaho可以和hive做对接,所以和spark-sql做对接也是妥妥的.结果让人很失望了啊,我配置了很久都搞不定,最后脑袋突然灵机一动打通了. 1:替换pentaho自带的hive驱动. 路径 ...
- 实现斗地主纸牌游戏---洗牌 发牌 看底牌的具体功能------Map集合存储方法 遍历的应用
该Demo只是斗地主的游戏的一部分,实现的斗地主的组合牌 洗牌 发牌 看牌的功能,主要应用Map集合进行练习 package cn.lijun import java.util.ArrayList ...