for (i=; i<; i++)
tree[i][]=tree[i][]=i;
for (i=; i>=; i--)
tree[i][]=tree[i+i][],
tree[i][]=tree[i+i+][];
void Down(int x)
{
tree[x+x][]+=tree[x][];
tree[x+x+][]+=tree[x][];
tree[x+x][]+=tree[x][]*
(tree[x+x][]-tree[x+x][]+);
tree[x+x+][]+=tree[x][]*
(tree[x+x+][]-tree[x+x+][]+);
tree[x][]=;
}
int work(int root,int l,int r,int k)
{
if (tree[root][]==l &&
tree[root][]==r)
{
tree[root][]+=k;
tree[root][]+=k*(r-l+);
return ;
}
tree[root][]+=k*(r-l+);
//Down(root);
int mid=(tree[root][]+tree[root][])/;
if (l<=mid)
work(root+root,l,min(mid,r),k);
if (r>mid)
work(root+root+,max(mid+,l),r,k);
// tree[root][3]=tree[root+root][3]+tree[root+root+1][3];
return;
}
int work2(int root,int l,int r)
{
if (tree[root][]==l &&
tree[root][]==r)
return tree[root][];
Down(root);
int mid=(tree[root][]+tree[root][])/;
int p=,q=;
if (l<=mid)
p=work2(root+root,l,min(mid,r));
if (r>mid)
q=work2(root+root+,max(mid+,l),r);
return p+q;
} while (Q--)
{
cin>>A;
if (A==)
{
cin>>x>>y>>z;
work(,x+,y+,z);
}
if (A==)
{
cin>>x>>y;
cout<<work2(,x+,y+);
}
}
tree[i][] 表示编号最小的叶子
tree[i][] 编号最大的叶子
tree[i][] 以i为根,所有叶子一次性全部加的,
总共加了多少。
tree[i][] 以i为根,所有叶子的权值之和是多少

zhw大神线段树姿势的更多相关文章

  1. 【BZOJ-4530】大融合 线段树合并

    4530: [Bjoi2014]大融合 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 280  Solved: 167[Submit][Status] ...

  2. [LOJ#2980][THUSCH2017]大魔法师(线段树+矩阵)

    每个线段树维护一个行向量[A,B,C,len]分别是这个区间的A,B,C区间和与区间长度,转移显然. 以及此题卡常,稍微哪里写丑了就能100->45. #include<cstdio> ...

  3. LOJ 2980 「THUSCH 2017」大魔法师——线段树

    题目:https://loj.ac/problem/2980 线段树维护矩阵. 然后是 30 分.似乎是被卡常了?…… #include<cstdio> #include<cstri ...

  4. [BZOI2014]大融合——————线段树进阶

    竟然改了不到一小时就改出来了, 可喜可贺 Description Solution 一开始想的是边两侧简单路径之和的乘积,之后发现这是个树形结构,简单路径数就是节点数. 之后的难点就变成了如何求线段树 ...

  5. 北大zhw大神bzoj1756代码

    #include <cmath> #include <cstdio> #include <cstdlib> #include <iostream> #i ...

  6. HDU 5091---Beam Cannon(线段树+扫描线)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5091 Problem Description Recently, the γ galaxies bro ...

  7. BZOJ-1699 Balanced Lineup 线段树区间最大差值

    Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 41548 Accepted: 19514 Cas ...

  8. HDU1199 动态线段树 // 离散化

    附动态线段树AC代码 http://acm.hdu.edu.cn/showproblem.php?pid=1199 因为昨天做了一道动态线段树的缘故,今天遇到了这题没有限制范围的题就自然而然想到了动态 ...

  9. [CodeChef - STREETTA] The Street 李超线段树

    大致题意: 给出两个序列A,B,A初始为负无穷,B初始为0,有三种操作 1.在A上区间[u,v]上加一个等差数列,取与原本A序列的最大值. 2.在B上区间[u,v]上加一个等差数列. 3.给出一个点X ...

随机推荐

  1. 每日命令:(5)rm

    昨天学习了创建文件和目录的命令mkdir ,今天学习一下linux中删除文件和目录的命令: rm命令.rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所 ...

  2. 深入理解PHP之strpos

    概述 在php中经常用 strpos 判断字符串是否在另一个字符串中存在, 本文介绍 strpos 函数及其实现. strpos应用 <?php /* strpos示例 */ // test e ...

  3. JMeter测试websocket

    今天公司要测websocket,搞了一天踩了不少坑,关键是还没爬出来,BOSS让回家再理理思路,没办法到家就开干. 一.家里玩的还是2.1的,为了少踩坑,先下个JMeter5.1.1(他们说4版本也行 ...

  4. How to put username &password in MongoDB(Security&Authentication)?(配置用户认证在MongoDB)

    Default do not need username and password authenticate when access mongoDB ,I want to set up the use ...

  5. uestc 1903

    #include<stdio.h> int main() { int n,m,i,t; scanf("%d",&t); while(t--){ scanf(&q ...

  6. codevs1127 接水问题

    题目描述 Description 学校里有一个水房,水房里一共装有m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1. 现在有n 名同学准备接水,他们的初始接水顺序已经确定.将这些同学按接 ...

  7. G - 免费馅饼 基础DP

    都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内.馅饼如果掉在了地上当然就 ...

  8. P2626 斐波那契数列(升级版) 洛谷(2626)

    https://www.luogu.org/problem/show?pid=2626 题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f ...

  9. eclipse的Java项目修改后要不要重启tomcat问题

    tomcat服务器重新部署工程或者修改了项目的代码就必须重启tomcat吗? 答: omcat服务器重新部署工程或者修改了项目的代码就必须重启tomcat吗?有没有不重启的方法,或者其他高效点的,让服 ...

  10. docker: 定时检查docker container的运行状态并发邮件报警

    首先创建一个发送邮件的bash脚本 - send_mail.sh: #!/bin/bash curl -s --user 'api:key-xxxxxxxxxxxxx' \ https://api.m ...