博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线段树推式子版
阅读量:5290 次
发布时间:2019-06-14

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

题:https://www.luogu.org/problem/P2221#submit

求:ans=i=lra[i](ri+1)(il+1)

 

#include
using namespace std;typedef long long ll;#define lson root<<1,l,midd#define rson root<<1|1,midd+1,rconst int M=1e5+5;struct node{ ll sum[6];}tree[M<<2];ll lazy[M<<2];ll sum1,sum2,sum3;void build(int root,ll l,ll r){ if(l==r){ tree[root].sum[4]=l; tree[root].sum[5]=1ll*l*l; return ; } int midd=(l+r)>>1; build(lson); build(rson); tree[root].sum[4]=tree[root<<1|1].sum[4]+tree[root<<1].sum[4]; tree[root].sum[5]=tree[root<<1|1].sum[5]+tree[root<<1].sum[5];}void up(int root){ tree[root].sum[1]=tree[root<<1].sum[1]+tree[root<<1|1].sum[1]; tree[root].sum[2]=tree[root<<1].sum[2]+tree[root<<1|1].sum[2]; tree[root].sum[3]=tree[root<<1].sum[3]+tree[root<<1|1].sum[3];}void work(int root,ll len,ll k){ tree[root].sum[1]+=1ll*len*k; tree[root].sum[2]+=1ll*k*tree[root].sum[4]; tree[root].sum[3]+=1ll*k*tree[root].sum[5]; lazy[root]+=1ll*k;}void pushdown(int root,ll len){ work(root<<1,len-(len>>1),lazy[root]); work(root<<1|1,(len>>1),lazy[root]); lazy[root]=0;}void update(int L,int R,ll k,int root,ll l,ll r){ if(L<=l&&r<=R){ work(root,r-l+1,k); return ; } if(lazy[root]) pushdown(root,r-l+1); ll midd=(l+r)>>1; if(L<=midd) update(L,R,k,lson); if(R>midd) update(L,R,k,rson); up(root);}void query(int L,int R,int root,ll l,ll r){ if(L<=l&&r<=R){ sum1+=tree[root].sum[1]; sum2+=tree[root].sum[2]; sum3+=tree[root].sum[3]; return ; } if(lazy[root]) pushdown(root,r-l+1); ll midd=(l+r)>>1; if(L<=midd) query(L,R,lson); if(R>midd) query(L,R,rson);// up(root);}char op[2];int main(){ int n,m; scanf("%d%d",&n,&m); n-=1; build(1,1,n); while(m--){ ll l,r; ll z; scanf("%s",op); sum1=0,sum2=0,sum3=0; if(op[0]=='C'){ scanf("%lld%lld%lld",&l,&r,&z); r-=1; update(l,r,z,1,1,n); } else{ scanf("%lld%lld",&l,&r); r--; query(l,r,1,1,n); ll fenzi=(r-l-l*r+1)*sum1+(r+l)*sum2-sum3; ll fenmu=(r-l+2)*(r-l+1)/2; ll g=__gcd(fenzi,fenmu); // cout<
<<"!!!!!!!"<
<
View Code

 

转载于:https://www.cnblogs.com/starve/p/11511318.html

你可能感兴趣的文章
如何添加 actions
查看>>
jQuery移除或禁用html元素点击事件常用方法小结
查看>>
volatile关键字
查看>>
20180524模拟赛T3——Word
查看>>
计算机网络基础
查看>>
关于书签(BookMark)操作;
查看>>
查看Linux服务器的硬盘使用情况
查看>>
日报 18/06/20
查看>>
loj #6136. 「2017 山东三轮集训 Day4」Left
查看>>
java集合类
查看>>
学习资料
查看>>
java 18 - 8 HashMap和ArrayList的嵌套2
查看>>
Day21 Json & pickle 数据序列化
查看>>
内存结构。
查看>>
洛谷 [FJOI2014]最短路径树问题 解题报告
查看>>
欲望都市游戏设计 背景图层和UI图层的设计
查看>>
2-2 groovy基础知识-理论介绍
查看>>
Null Object Design Pattern (Python recipe)
查看>>
bootstrap学习笔记(6)
查看>>
leetcode : Valid Sudoku
查看>>