线段树/树状数组裸题,用splay写 splay也是基本操作pushup pushdown 话说我就是找不到全一点的模板,我自己写又全是bug,导致代码风格一直变来变去= = 关键是建树和区间操作(区间和,区间翻转,区间合并这几个写法都很难统一) #include<map> #include<set ...
分类:
其他好文 时间:
2017-10-31 12:46:14
阅读次数:
196
区间和模板: 1.单点更新,区间求和 HDU - 1166 #include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define mem(a,b) memset(a,b,sizeo ...
分类:
编程语言 时间:
2017-10-29 14:35:15
阅读次数:
293
题目描述 现给定n个闭区间[ai, bi],1<=i<=n。这些区间的并可以表示为一些不相交的闭区间的并。你的任务就是在这些表示方式中找出包含最少区间的方案。你的输出应该按照区间的升序排列。这里如果说两个区间[a, b]和[c, d]是按照升序排列的,那么我们有a<=b<c<=d。 请写一个程序: ...
分类:
其他好文 时间:
2017-10-24 22:33:02
阅读次数:
148
思路 快速的基本思路是每次都选取一个基准,然后将大于该基准的元素放在右边,小的放在左边。然后利用分治法,对基准的左区间和右区间进行下一轮的快排,直到每个区间只剩一个元素,终止递归。 关键点 本算法的关键点就是在选取一个基准后,将所有元素分成两个子区间。利用挖坑填补的生活原理,我们以当前区间为例,一般 ...
分类:
编程语言 时间:
2017-10-24 14:13:20
阅读次数:
227
树状数组的原理和实现 概念 树状数组或者二叉索引树也称作Binary Indexed Tree,又叫做Fenwick树;它的查询和修改的时间复杂度都是log(n),空间复杂度则为O(n),这是因为树状数组通过将线性结构转化成树状结构,从而进行跳跃式扫描。通常使用在高效的计算数列的前缀和,区间和。 其 ...
分类:
编程语言 时间:
2017-10-22 22:18:15
阅读次数:
226
题目描述 Description 有n个数和5种操作 add a b c:把区间[a,b]内的所有数都增加c set a b c:把区间[a,b]内的所有数都设为c sum a b:查询区间[a,b]的区间和 max a b:查询区间[a,b]的最大值 min a b:查询区间[a,b]的最小值 输 ...
分类:
其他好文 时间:
2017-10-20 21:51:26
阅读次数:
287
3930: [CQOI2015]选数 Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案。小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公约数,以便进一步研究。然而他很快发现工作量太大了,于是向你寻求 ...
分类:
其他好文 时间:
2017-10-20 21:44:33
阅读次数:
220
RMQ问题:求长度为n的数列中,求[i,j]直接的最值。 ST算法:一种动态规划的方法。 一、预处理dp数组 对于区间[i,i+2^j-1]的最值,只需要知道区间[i,i+2^(j-1)-1]和区间[i+2^(j-1),i+2^j-1]的最值即可。 由此可的递推方程:dp[i,i+2^j-1] = ...
分类:
编程语言 时间:
2017-10-19 10:22:33
阅读次数:
186
题目描述 现给定n个闭区间[ai, bi],1<=i<=n。这些区间的并可以表示为一些不相交的闭区间的并。你的任务就是在这些表示方式中找出包含最少区间的方案。你的输出应该按照区间的升序排列。这里如果说两个区间[a, b]和[c, d]是按照升序排列的,那么我们有a<=b<c<=d。 请写一个程序: ...
分类:
其他好文 时间:
2017-10-18 23:17:12
阅读次数:
225
类似于区间树,在各个节点保存的是一条线段(子数组),可高效解决连续区间动态查询问题。 *单点或区间的修改 区间的最值以及求和 可基本保持单次操作为log的复杂度。 线段树的每个节点表示一个区间,子节点则分别表示父亲节点的左半区间和右半区间。如果父亲节点是[a,b],那么令c = (a+b) / 2, ...
分类:
其他好文 时间:
2017-10-08 12:10:12
阅读次数:
170