题意简明,不说了(

因为教练让同学们做线段树的题,早就会了线段树的我就来爆踩水水蓝了/kk

首先推一下柿子:

\[\frac 1 n\sum_{i=1}^n(a_i^2-2 \times a_i \times \overline a + \overline a^2)
\]
\[\frac 1 n(\sum_{i=1}^na_i^2-2\overline a \times \sum_{i=1}^na_i + n \times \overline a^2)
\]

于是用线段树维护一下区间和&区间平方和就好了。。。

愿意的话甚至可以用树状数组维护。。。

code:

  1. #include<cstdio>
  2. const int M=1e5+5,mod=1e9+7;
  3. int n,m,a[M];
  4. inline int Inv(int a){
  5. int b=mod-2,ans=1;
  6. for(;b;b>>=1,a=1ll*a*a%mod)if(b&1)ans=1ll*ans*a%mod;
  7. return ans;
  8. }
  9. inline int Add(const int&a,const int&b){
  10. return a+b>=mod?a+b-mod:a+b;
  11. }
  12. inline int Del(const int&a,const int&b){
  13. return a-b<0?a-b+mod:a-b;
  14. }
  15. struct Node{
  16. int sum,squ;
  17. inline Node operator+(const Node&it)const{
  18. return (Node){Add(sum,it.sum),Add(squ,it.squ)};
  19. }
  20. }tmp,t[M<<2];
  21. inline void update(const int&u){
  22. t[u]=t[u<<1]+t[u<<1|1];
  23. }
  24. void build(int u,int l,int r){
  25. if(l==r)t[u].sum=a[l],t[u].squ=1ll*a[l]*a[l]%mod;
  26. else{
  27. int mid=l+r>>1;
  28. build(u<<1,l,mid);build(u<<1|1,mid+1,r);
  29. update(u);
  30. }
  31. }
  32. void Modify(int u,int x,int val,int l=1,int r=n){
  33. if(l==r)t[u].sum=val,t[u].squ=1ll*val*val%mod;
  34. else{
  35. int mid=l+r>>1;
  36. if(x<=mid)Modify(u<<1,x,val,l,mid);
  37. else Modify(u<<1|1,x,val,mid+1,r);
  38. update(u);
  39. }
  40. }
  41. Node Query(int u,int L,int R,int l=1,int r=n){
  42. if(L>r||l>R)return (Node){0,0};
  43. if(L<=l&&r<=R)return t[u];
  44. int mid=l+r>>1;
  45. return Query(u<<1,L,R,l,mid)+Query(u<<1|1,L,R,mid+1,r);
  46. }
  47. signed main(){
  48. register int i,f,L,R,val,inv;
  49. scanf("%d%d",&n,&m);
  50. for(i=1;i<=n;++i)scanf("%d",a+i);
  51. build(1,1,n);
  52. for(i=1;i<=m;++i){
  53. scanf("%d%d%d",&f,&L,&R);
  54. if(f==1){
  55. Modify(1,L,R);
  56. }
  57. else{
  58. tmp=Query(1,L,R);
  59. inv=Inv(R-L+1);
  60. val=1ll*inv*tmp.sum%mod;
  61. printf("%d\n",1ll*inv*Del(Add(tmp.squ,1ll*val*val%mod*(R-L+1)%mod),2ll*val*tmp.sum%mod)%mod);
  62. }
  63. }
  64. }

LGP5142题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. MSTP多生成树协议

    MSTP多生成树协议 目录 MSTP多生成树协议 1.MSTP(Multiple Spanning Tree Protocol)概述 2.STP.RSTP.PVST的应用缺陷 3.MSTP的主要特点 ...

  2. Redis高可用(持久化、主从复制、哨兵、集群)

    Redis高可用(持久化.主从复制.哨兵.集群) 目录 Redis高可用(持久化.主从复制.哨兵.集群) 一.Redis高可用 1. Redis高可用概述 2. Redis高可用策略 二.Redis持 ...

  3. Springboot+Redisson自定义注解一次解决重复提交问题(含源码)

    前言   项目中经常会出现重复提交的问题,而接口幂等性也一直以来是做任何项目都要关注的疑难点,网上可以查到非常多的方案,我归纳了几点如下:   1).数据库层面,对责任字段设置唯一索引,这是最直接有效 ...

  4. 有手就行4——jenkins项目构建类型(自由风格,maven风格)

    有手就行4--构建Maven项目 Jenkins项目构建类型(1)-Jenkins构建的项目类型介绍 Jenkins项目构建类型(2)-自由风格项目构建 Jenkins项目构建类型(3)-Maven项 ...

  5. .NET 云原生架构师训练营(权限系统 代码实现 EntityAccess)--学习笔记

    目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...

  6. Solution -「ABC 219H」Candles

    \(\mathcal{Description}\)   Link.   有 \(n\) 支蜡烛,第 \(i\) 支的坐标为 \(x_i\),初始长度为 \(a_i\),每单位时间燃烧变短 \(1\) ...

  7. Solution -「POI 2014」「洛谷 P5904」HOT-Hotels 加强版

    \(\mathcal{Description}\)   Link.   给定一棵 \(n\) 个点的树,求无序三元组 \((u,v,w)\) 的个数,满足其中任意两点树上距离相等.   \(n\le1 ...

  8. MySQL架构原理之体系架构

    MySQL是最流行的关系型数据库软件之一,由于其体量小.速度快.开源免费.简单易用.维护成本低等,在季军架构中易于扩展.高可用等优势,深受开发者和企业的欢迎,在互联网行业广泛使用. 其系统架构如下: ...

  9. docker 批量删除 none 镜像

    在使用 docker images 命令的时候,经常会在列表中看到 <none>:<none> 的镜像. 这种镜像在 Docker 官方文档中被称作 dangling imag ...

  10. 从.net开发做到云原生运维(二)——.net core生态

    1. 新的开始从.net 6.0开始 .net 6.0作为一个长期支持版,具有里程碑的意义.从.net5.0将.net framework和.net core合并以后,在.net5.0的功能上再次完善 ...