博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Another Array of Orz Pandas
阅读量:7053 次
发布时间:2019-06-28

本文共 1375 字,大约阅读时间需要 4 分钟。

Another Array of Orz Pandas

题目链接:

线段树

线段树维护区间和以及区间内各个数平方和,对于每一个询问ans=(sum2-pow_sum)/2

代码如下:

1 #include
2 #include
3 #define lson (x<<1) 4 #define rson (x<<1|1) 5 #define mid ((l+r)>>1) 6 #define N 100007 7 typedef long long LL; 8 struct nod{ 9 LL sum,lazy,or2zds;10 }a[N<<2];11 const LL mod=1e9+7;12 const LL Max=1e9;13 LL n,m;14 void push_up(LL x){15 a[x].sum=(a[lson].sum+a[rson].sum)%mod;16 a[x].or2zds=(a[lson].or2zds+a[rson].or2zds)%mod;17 }18 void push_down(LL x,LL l,LL r){19 a[lson].or2zds=(a[lson].or2zds+(a[x].lazy*a[x].lazy)%mod*(mid+1-l)+2*a[x].lazy*a[lson].sum+mod)%mod;20 a[lson].sum=(a[lson].sum+a[x].lazy*(mid+1-l))%mod;21 a[lson].lazy=(a[lson].lazy+a[x].lazy)%mod;22 a[rson].or2zds=(a[rson].or2zds+(a[x].lazy*a[x].lazy)%mod*(r-mid)+2*a[x].lazy*a[rson].sum+mod)%mod;23 a[rson].sum=(a[rson].sum+a[x].lazy*(r-mid))%mod;24 a[rson].lazy=(a[rson].lazy+a[x].lazy)%mod;25 a[x].lazy=0;26 }27 void add(LL x,LL l,LL r,LL cl,LL cr,LL v){28 if(cl<=l&&r<=cr){29 a[x].or2zds=(a[x].or2zds+(v*v)%mod*(r-l+1)%mod+2*v*a[x].sum)%mod;30 a[x].sum=(a[x].sum+v*(r-l+1))%mod;31 a[x].lazy=(a[x].lazy+v)%mod;32 return;33 }34 if(a[x].lazy!=0)push_down(x,l,r);35 if(cl<=mid)add(lson,l,mid,cl,cr,v);36 if(mid

 

转载于:https://www.cnblogs.com/barrier/p/6134137.html

你可能感兴趣的文章
操作ajax生成页面的一个问题
查看>>
Android开发之自定义Dialog简单实现
查看>>
hdu1528 Card Game Cheater
查看>>
dispatch_group_t
查看>>
菜鸟机器学习散点总结(三)
查看>>
Cocos Creator Animation 组件
查看>>
RH033读书笔记(1)-Lab2 Linux Usage Basics
查看>>
window对象 (浏览器对象模型)
查看>>
Loadrunner 关于参数赋值取值的操作
查看>>
C# 实现保留两位小数的方法
查看>>
Http协议4个新的http状态码:428、429、431、511;
查看>>
C#类型简述
查看>>
Go:字符串操作
查看>>
EXCEL 2010学习笔记 —— VLOOKUP函数 嵌套 MATCH 函数
查看>>
android graphics: 2D animation
查看>>
升级 python 2.6.6 系统到 2.7.10 版本
查看>>
start with connect by prior 递归查询用法
查看>>
OS X 10.11 安装Cocoapods
查看>>
基于 HTML5 的工业互联网 3D 可视化应用
查看>>
洛谷——P1160 队列安排(链表的基础操作)
查看>>