题目描述:给定一个数字序列,查询任意给定区间内数字的最小值。输入:输入包含多组测试用例,每组测试用例的开头为一个整数n(1 2 #include 3 #include 4 #include 5 using namespace std; 6 7 int n, t; 8 int l, r; 9...
分类:
其他好文 时间:
2014-12-03 20:52:53
阅读次数:
210
题意:如果一个序列的任意连续子序列中至少有一个只出现一次的元素,则称这个序列是不无聊的。判断一个长度为n(n<=200000)的序列是不是无聊的。
解法:搞个map记录每个数前一个数的位置,判断以每个数结尾的所有区间是否合法,其中用到线段树访问区间最小值。
代码:/******************************************************
* ...
分类:
其他好文 时间:
2014-11-28 01:06:50
阅读次数:
274
传送门:点击打开链接
题目大意:
对一个数组有2种操作。
1:左移,将给定的几个位置左移。
2:求区间最小值。
解题思路:
左移。。。呵呵 么见过。怎么搞。再读读题。然后惊讶的发现。Each operation is formatted as a string having no more than 30 characters
那就好办了。弄成单点更新就OK了!...
分类:
其他好文 时间:
2014-11-19 18:47:17
阅读次数:
148
leetcode上的一道题 题意大致是:给定一个循环移位后的排序数组,求数组的最小值 抛开假设不谈,实际上就是一个求数组最小值的问题,可以o(n)扫一遍记录最小值;也相当于求[0,vec.size()-1]的区间最小值问题,可以转化成线段树树状数组处理 本问题的假设可以利用:数组是“片段”有序的,可...
分类:
其他好文 时间:
2014-10-20 14:56:04
阅读次数:
143
题目大意:维护一个序列,提供一些操作:
1.将一个区间加上一个值
2.翻转一个区间
3.将一个区间内的数字旋转T次(每次旋转区间内每个元素向右移一位,最右一个移动到最左面去)
4.在一个元素后面插入一个数
5.删除某个元素
6.查询区间最小值
写过BZOJ那几道Splay之后这题就变得非常水了。。。只是有几个要点需要注意:
1.操作3的T可能大于区间长度 还可能是负的 所以一定要取...
分类:
其他好文 时间:
2014-09-22 14:44:42
阅读次数:
227
游程编码的基本原理是:用一个符号值或串长代替具有相同值的连续符号(连续符号构成了一段连续的“行程”。游程编码因此而得名),使符号长度少于原始数据的长度。只在各行或者各列数据的代码发生变化时,一次记录该代码及相同代码重复的个数,从而实现数据的压缩。
游程编码(Run Length Encoding , RLE)
例如:5555557777733322221111111
游程编码为:(5...
分类:
其他好文 时间:
2014-09-09 13:21:40
阅读次数:
124
基本概念LCA:树上的最近公共祖先,对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。RMQ:区间最小值查询问题。对于长度为n的数列A,回答若干询问RMQ(A,i,j),返回数列A中下标在[i,j]里的最小值下标。朴素LCA算法求出...
分类:
其他好文 时间:
2014-08-08 17:36:16
阅读次数:
226
UVA 12299 - RMQ with Shifts
题目链接
题意:给定一个数组,两种操作,每次query操作输出区间最小值,每次shift操作把选中位置每个位置向左移一位,最左的到最后去
思路:线段树,shift操作中位置个数不会超过30个,那么直接当作点修改来做,那么就变成了简单的线段树了
代码:
#include
#include
#include
u...
分类:
其他好文 时间:
2014-07-30 20:56:34
阅读次数:
331
求区间内最大数和最小数的差,用两棵线段树,一个维护区间最大值,一个维护区间最小值。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define QUADMEM...
分类:
其他好文 时间:
2014-07-29 22:00:02
阅读次数:
259
题意:
将一列数字排序 排序规则是 每次找到最小值的位置loc 将1~loc所有数字颠倒 然后删掉第一位 直到排好序 排序要求是稳定的
思路:
这题要做的是 寻找区间最小值位置 翻转区间 的操作 因此可以想到用splay
只需要每个节点记录一个small 就可以实现找到最小值位置
翻转区间操作就是将splay的超级头转到最上面使之成为根 再把loc转到根下面 这时根的右儿子的左儿子就是需要翻转的区间 用一个rev延迟更新 然后将loc转到最上面是指成为根 删掉根 如此循环...
分类:
其他好文 时间:
2014-07-17 10:53:28
阅读次数:
217