JL一定不会的——重口味线段树

注意求M的地方:for(M=1;M<=n+1;M*=2);

和老言争论了半天的n后面是否+1(是否进行越界处理),后来得出的结论是:

+1,浪费空间;

不加,遇到特殊情况有安全隐患,但证明,对于t,如果为偶数,则不进行处理,所以,可以不加.

 1 int Query(int s,int t){
 2     int ans=0;
 3     for(s=s+M-1,t=t+M+1;s^t^1;s>>=1,t>>=1){
 4         if(~s&1) ans+=T[s^1];//如果是左子树的左孩子,则处理左子树右孩子
 5         if( t&1) ans+=T[t^1];//如果是右子树的左孩子,则处理右子树左孩子
 6     }
 7     return ans;
 8 }
 9 void Add(int n,int V){
10     for(T[n+=M]+=V,n>>=1;n;n>>=1){
11         T[n]=T[n+n]+T[n+n+1];
12     }
13 }
14 void Sub(int n,int V){
15     for(T[n+=M]-=V,n/=2;n;n/=2){
16         T[n]=T[n*2]+T[n*2+1];
17     }
18 }
19 void build_tree(int n){
20     int i;
21     for(M=1;M<=n+1;M*=2)//计算M
22     for(i=M+1;i<=M+n;i++){
23         scanf("%d",&T[i]);
24     }
25     for(i=M-1;i>0;i--) T[i]=T[i*2]+T[i*2+1];
26 }

核心代码

这个东西,估计某人一定不会。

至于JL是谁,详见博客——翻译

时间: 2024-09-30 03:58:55

JL一定不会的——重口味线段树的相关文章

poj 3264 线段树

线段树太弱了,题目逼格一高连代码都读不懂,今天开始重刷线段树,每天一题,风格用kuangbin大神和以前的,两种都写一遍 RMQ做法:poj3264 1 /* 2 POJ 3264 Balanced Lineup 3 题目意思:给定Q(1<=Q<=200000)个数A1,A2,```,AQ, 4 多次求任一区间Ai-Aj中最大数和最小数的差 5 */ 6 #include<stdio.h> 7 #include<algorithm> 8 #include<iost

丢弃重口味的xml配置--spring4用groovy配置bean(转)

spring4之前,bean的配置可以主要分为两种方式,一种是使用基于xml,个人非常讨厌这种方式,因为明明一件很简单的事,放在xml中就会多了不少繁杂的信息.另一种方式,是从spring3.0开始,spring提供了是基于java的配置,相比于xml的配置方式,看起来会好一点儿.而在几天前release的spring4.0中,我们可以用groovy作为spring的配置文件啦!比起最早的基于xml配置,使用groovy会更加灵活,而且干扰信息会更少.比起基于java的配置,groovy配置还要

BZOJ 3551 ONTAK2010 Peaks加强版 Kruskal重构树+可持久化线段树

题目大意:同3545 强制在线 3545题解传送门:http://blog.csdn.net/popoqqq/article/details/40660953 强制在线没法排序 启发式合并也就用不了了 Kruskal重构树是个挺好玩的东西 可以拿来处理一些最小生成树的边权最值问题 这里我们Kruskal连边时并不直接连边 而是新建一个节点ext 将两个点所在子树都连到ext的儿子上 比如说样例的树就建成了这样 图中红色的是原图的边权,黑色的是原图上的点 这样生成的树有一些十分优美的性质: 1.二

“重口味”海报引发热议,LG V6000 Plus冰箱如何诠释“精准营销”?

近年来,人们对饮食健康的关注度是越来越高了,不过,在我们日常生活中,却有很多问题值得关注,以冰箱为例,很多人认为食物放在冰箱里面就安全了,不会腐败,也不用什么保鲜袋包装.殊不知,任何事物都有自身的气味,加之冰箱并不透气,久而久之,各种食物的气味就会互相交集影响形成异味,不仅让人大倒胃口,甚至可能影响食物的品质,如果长期不对冰箱进行清理,必然会影响我们的身体健康. 针对这一问题,5月3日,LG官方发布一组以#此图有毒,一看就瘦#为话题的"重口味"海报,一经发出迅速引发网友关注,@美食达人

[IOI2018]werewolf狼人——kruskal重构树+可持久化线段树

题目链接: IOI2018werewolf 题目中编号都是从0开始,太不舒服了,我们按编号从1开始讲QAQ. 题目大意就是询问每次从一个点开始走只能走编号在[l,n]中的点,在任意点变成狼,之后只能走[0,r]中的点,是否能到达另一个点. 后一部分其实就是找有哪些点只走[0,r]中的点能到达终点,那么反过来看,就是终点只走[0,r]中的点能到达哪些点. 那么只要起点能到达的点和终点能到达的点中有交集就有解. 因为起点只能走一些编号较大的点,那么我们求出原图的最大生成树,建出kruskal重构树,

去口臭的最佳方法-便便黏马桶是大肠癌前兆?重口味辟谣

去口臭的最佳方法-便便黏马桶是大肠癌前兆?重口味辟谣 跟着安康常识的赓续普及,信赖曾有愈来愈多的人在上完厕所冲马桶前会回头看一眼本身的便便:色彩正不正常,喷喷鼻肠状照样泥状--因而,关于便便性状与安康关系的各类谎言也随之出世. 比来在汇集上广为传达的"便便老黏在马桶上冲不掉落落,寄望肠癌"的说法,惹起了遍及的热议,乃至惶恐.细心想想,便便黏马桶现象仿佛十分罕有,可以或许每小我或多或少都碰着过. 可是,这真的能和肠癌扯上关系吗?信赖看完这篇文章你就全大白了. 通俗来讲,让人担忧的便便包含

codevs 1299 线段树 区间更新查询

1299 切水果 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 查看运行结果 题目描述 Description 简单的说,一共N个水果排成一排,切M次,每次切[L,R]区间的所有水果(可能有的水果被重复切),每切完一次输出剩下水果数量 数据已重新装配,不会出现OLE错误 时限和数据范围适当修改,避免数据包过大而浪费空间资源 输入描述 Input Description 第1行共包括2个正整数,分别为N,M. 接下来m行每行两个正整数L,R 输出描述 

树——线段树

线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点. 对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b].因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度. 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN).而未优化的空间复杂度为2N,因此有时需要离散化让空间压缩. 案例:节点更新,查找最小值 #1077

BZOJ 2243:染色(树链剖分+区间合并线段树)

[SDOI2011]染色Description给定一棵有n个节点的无根树和m个操作,操作有2类:1.将节点a到节点b路径上所有点都染成颜色c:2.询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”由3段组成:“11”.“222”和“1”.请你写一个程序依次完成这m个操作.Input第一行包含2个整数n和m,分别表示节点数和操作数:第二行包含n个正整数表示n个节点的初始颜色下面 行每行包含两个整数x和y,表示x和y之间有一条无向边.下面 行每行描述一个操作:“C