如何将普通树状数组升级 普通的单点修改单点查询就不讲了,从区间修改和单点查询讲起。 原来的值存在a[]里面,多建立个数组c1[],注意:c1[i]=a[i]-a[i-1]。 那么求a[i]的值的时候a[i]=a[i-1]+c1[i]=a[i-2]+c1[i]+c1[i-1]=…..=c1[1]+c1 ...
分类:
编程语言 时间:
2017-08-19 22:20:59
阅读次数:
231
先是线段树 可以知道mex(i,i),mex(i,i+1)到mex(i,n)是递增的。 首先很容易求得mex(1,1),mex(1,2)......mex(1,n) 因为上述n个数是递增的。 然后使用线段树维护,需要不断删除前面的数。 比如删掉第一个数a[1]. 那么在下一个a[1]出现前的 大于a ...
分类:
其他好文 时间:
2017-08-17 10:23:11
阅读次数:
116
一、相关介绍 线段树:它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题。由于二叉结构的特性,它基本能保持每个操作的复杂度为O(logn)。 线段树的每个节点表示一个区间,子节点则分别表示父节点的左右半区间,例如父亲的区间是[a,b],那么(c=(a+b)/2)左 ...
分类:
其他好文 时间:
2017-08-13 16:24:41
阅读次数:
133
题目链接 题目是对一个数组,支持两种操作 操作C:对下标从a到b的每个元素,值增加c; 操作Q:对求下标从a到b的元素值之和。 具体题解参见 http://blog.csdn.net/acceptedxukai/article/details/6933446 代码来自 http://blog.csd ...
分类:
其他好文 时间:
2017-08-11 21:57:45
阅读次数:
133
【题目描述】: 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 【输入描述】: 第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。 接下来M行每行包含3或4个 ...
分类:
其他好文 时间:
2017-08-09 00:00:59
阅读次数:
315
Sequence operation Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8308 Accepted Submission(s): ...
分类:
其他好文 时间:
2017-08-03 22:15:44
阅读次数:
274
1798: [Ahoi2009]Seq 维护序列seq Description 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成。 有长为N的数列,不妨设为a1,a2,…,aN 。有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2)把数列中的一段数全部加一个值; (3)询问 ...
分类:
其他好文 时间:
2017-08-03 13:43:54
阅读次数:
148
01、入门Oracle 本章目标: 掌握oracle安装、启动和关闭 基本管理以及常用工具 简单备份和恢复 熟练使用sql,掌握oracle常用对象 掌握数据库设计和优化基本方法 03、SQL编程 1.oracle中between and 为闭区间,mysql中为开区间 2.修改表名语句:alter ...
分类:
数据库 时间:
2017-07-27 23:33:34
阅读次数:
241
这篇主要来讲一讲树状数组的区间修改 因为一个一个点改,毫无疑问耗时太长 所以,机智的人类YY出了用差分来表示数组 为了便于理解,简单一点数组{an}:a[1]=0, a[2]=0, a[3]=0, a[4]=0, a[5]=0, a[6]=0 ,a[7]=0, a[8]=0, a[9]=0 用差分思 ...
分类:
编程语言 时间:
2017-07-24 16:29:12
阅读次数:
205
题目链接:http://poj.org/problem?id=3468 题解:splay功能比线段树强大当然代价就是有些操作比线段树慢,这题用splay实现的比线段树慢上一倍。线段树用lazy标记差不多要2s用splay要4s。可以用splay来实现线段树的区间操作更深层次的了解一下splay算是入 ...
分类:
其他好文 时间:
2017-07-19 00:18:28
阅读次数:
123