LGP5142题解
题意简明,不说了(
因为教练让同学们做线段树的题,早就会了线段树的我就来爆踩水水蓝了/kk
首先推一下柿子:
\]
\]
于是用线段树维护一下区间和&区间平方和就好了。。。
愿意的话甚至可以用树状数组维护。。。
code:
#include<cstdio>
const int M=1e5+5,mod=1e9+7;
int n,m,a[M];
inline int Inv(int a){
int b=mod-2,ans=1;
for(;b;b>>=1,a=1ll*a*a%mod)if(b&1)ans=1ll*ans*a%mod;
return ans;
}
inline int Add(const int&a,const int&b){
return a+b>=mod?a+b-mod:a+b;
}
inline int Del(const int&a,const int&b){
return a-b<0?a-b+mod:a-b;
}
struct Node{
int sum,squ;
inline Node operator+(const Node&it)const{
return (Node){Add(sum,it.sum),Add(squ,it.squ)};
}
}tmp,t[M<<2];
inline void update(const int&u){
t[u]=t[u<<1]+t[u<<1|1];
}
void build(int u,int l,int r){
if(l==r)t[u].sum=a[l],t[u].squ=1ll*a[l]*a[l]%mod;
else{
int mid=l+r>>1;
build(u<<1,l,mid);build(u<<1|1,mid+1,r);
update(u);
}
}
void Modify(int u,int x,int val,int l=1,int r=n){
if(l==r)t[u].sum=val,t[u].squ=1ll*val*val%mod;
else{
int mid=l+r>>1;
if(x<=mid)Modify(u<<1,x,val,l,mid);
else Modify(u<<1|1,x,val,mid+1,r);
update(u);
}
}
Node Query(int u,int L,int R,int l=1,int r=n){
if(L>r||l>R)return (Node){0,0};
if(L<=l&&r<=R)return t[u];
int mid=l+r>>1;
return Query(u<<1,L,R,l,mid)+Query(u<<1|1,L,R,mid+1,r);
}
signed main(){
register int i,f,L,R,val,inv;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)scanf("%d",a+i);
build(1,1,n);
for(i=1;i<=m;++i){
scanf("%d%d%d",&f,&L,&R);
if(f==1){
Modify(1,L,R);
}
else{
tmp=Query(1,L,R);
inv=Inv(R-L+1);
val=1ll*inv*tmp.sum%mod;
printf("%d\n",1ll*inv*Del(Add(tmp.squ,1ll*val*val%mod*(R-L+1)%mod),2ll*val*tmp.sum%mod)%mod);
}
}
}
LGP5142题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- 【转】Nginx location写法
转自:https://www.cnblogs.com/IPYQ/p/7889399.html nginx location正则写法 location = / { # 精确匹配 / ,主机名后面不能带任 ...
- DHCP原理与LINUX下的配置
DHCP原理与LINUX下的配置 目录 DHCP原理与LINUX下的配置 一.DHCP工作原理 1.DHCP概述 2.DHCP的优势 3.DHCP的分配方式 (1)自动分配 (2)手动分配 (3)动态 ...
- xss标签和属性爆破
当网站过滤了大部分的HTML标签和属性,我们就尝试爆破一下,看哪些标签和属性没有没过滤. 爆破的步骤: 1. 首先在测试点输入我们正常的exp,并抓包发送到Intruder模块. 2. 将exp改为 ...
- 基于redis5的redis cluster部署
一.环境规划 #准备六台主机,地址如下 10.0.0.8 ---> master1 10.0.0.18 ---> master2 10.0.0.28 ---> master3 10. ...
- Java 线程的 5 种状态
线程状态图: 线程共包括以下 5 种状态: 1. 新建状态(New): 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread(). 2. 就绪状态(Runna ...
- Python基础—编码(Day2)
一.字符编码 1.ASCII码:包含英文.数字.特殊字符,8位=1字节byte =1个字符,如: 0010 1010 ASCII码表里的字符总共有256个,前128个为常用的字符如运算符,后128个称 ...
- JUC并发工具类之 CountDownLatch等待多线程完成
上篇JUC同步工具之Semaphore - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)示例中,资源释放一个线程就可以退出然后另一个线程可以使用了,那如果需要所有规定数量的资源同时释放了才 ...
- Spring AOP应用之一:声明式事务
所有数据访问技术都提供事务处理机制,这些技术提供了API用来开启事务.提交事务完成数据操作,或者在发生错误的时候回滚数据.Spring本身并不支持事务实现,同时只是负责提供标准接口来处理不同数据访问技 ...
- No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK 问题解决
1. 问题描述 使用idea对Java工程执行mvn compile命令进行编译,出现以下报错: [ERROR] Failed to execute goal org.apache.maven.plu ...
- 拒绝for循环,从take_along_axis开始
技术背景 在前一篇文章中,我们提到了关于Numpy中的各种取index的方法,可以用于取出数组里面的元素,也可以用于做切片,甚至可以用来做排序.但是遇到对于高维矩阵的某一个维度取多个值的时候,单纯的使 ...