-----数据结构-----
KIJamesQi
这个作者很懒,什么都没留下…
展开
-
poj2823 Sliding Window(单调队列)
模版题,就是维护一个合法区间的最值。C++写的莫名的TLE了, 换成C就过了。 #include #define maxn 1010000 struct Element { int pos, val; }maxque[maxn], minque[maxn]; int maxhead,maxtail; int minhead,mintail; int n, k; int A[maxn]原创 2016-03-03 22:59:46 · 363 阅读 · 0 评论 -
FZU1894 志愿者选拔
基础单调队列,维护某区间的最值问题的工具。 /***************************************** Author :Crazy_AC(JamesQi) Time :2016 File Name : *****************************************/ // #pragma comment(linker, "原创 2016-03-19 16:43:25 · 308 阅读 · 0 评论 -
CodeForces 547B (单调栈)
题意 一个有n个元素的序列,没连续l个元素的最小值为这个串的strength值,求所有连续l个元素的strength是的最大值。 分析 a[i]如果是其所在串的strength值,那么必然它是最小值,往前和往后找小于它的第一个位置l、r,显然[l + 1, r + 1]区间的strength等于a[i]。 就可以更新长度为len(len = r - l + 1)的strength。还有原创 2016-08-17 17:18:36 · 580 阅读 · 0 评论 -
UVALive 7148 LRIP(树分治+STL)
题目链接 题目大意:给出一棵树有1≤n≤1051 \leq n \leq 10^5个节点,每个节点有个权值1≤ai≤1051 \leq a_i \leq 10^5 ,求一个由节点构成的 最长权值不降连续子串,且串的最大值和最小值的差diff≤D,1≤D≤105diff \leq D, 1 \leq D \leq 10^5,样例数T≤10T \leq 10。 思路:用树分治比较方便。考原创 2016-08-28 16:35:01 · 801 阅读 · 0 评论 -
poj3481 Double Queue(set模拟or splay)
题目链接 题目意思明确。可以用两个set来模拟,一个大的优先,一个小的优先,同时删除、同时加入。 struct item1 { int k, p; item1() {} item1(int k, int p) : k(k), p(p) {} bool operator < (const item1& rhs) const { return p <原创 2016-10-24 16:45:24 · 492 阅读 · 0 评论