HDU 2871 Memory Control
题目链接
题意:内存操作,和hotel那题差不多,多一个get操作
思路:线段树区间合并,其他都差不多,多一个get操作,这个用set去乱搞就过了- -,估计数据鶸吧,多这个操作感觉要用splay去搞了
代码:
#include
#include
#include
#include
using namespace...
分类:
其他好文 时间:
2014-10-18 22:23:21
阅读次数:
223
题目链接:hysbz 2243 染色
题目大意:略。
解题思路:树链剖分+线段树的区间合并,但是区间合并比较简单,节点只要记录左右端点的颜色即可。
#include
#include
#include
using namespace std;
const int maxn = 1e5 + 5;
int N, M, ne, val[maxn], first[maxn], j...
分类:
其他好文 时间:
2014-10-17 10:16:07
阅读次数:
254
题意:在l,r区间找到 最靠近左边的和最大区间。要理清思路写。简单区间合并。查找要麻烦点,三个查找函数,分别是向左范围内最大连续,向右范围内最大连续,整体最大连续。#include #include #include #include #include #include #include #in.....
分类:
其他好文 时间:
2014-10-14 13:25:28
阅读次数:
287
Codeforces 46D Parking Lot
题目链接
开线段树专题开出了这题。。看似要用区间合并求连续最大区间,其实不需要。因为询问才100个,直接set暴力去模拟即可,每次车进来就从左往右找到一个合适位置
代码:
#include
#include
#include
using namespace std;
const int N = 100005;
i...
分类:
其他好文 时间:
2014-10-14 11:11:58
阅读次数:
173
题意:给出q次询问,求区间内最长的连续序列。 水题。1.RMQ 求法 ,st算法 2.线段树,简单的区间合并#include#include#includeusing namespace std;const int maxn = 111111;const int INF = 99999999;int...
分类:
其他好文 时间:
2014-10-13 20:10:17
阅读次数:
221
HDU 3308 LCIS
题目链接
题意:一个序列,每次询问一个区间内最长连续上升子序列,或者修改一个位置的值
思路:线段树的区间合并,和最长连续子序列和是一样的思路,记录lsum, rsum, sum,表示左边连续长度,右边连续长度,和区间最长长度,然后pushup的时候进行区间合并操作即可
代码:
#include
#include
#include
us...
分类:
其他好文 时间:
2014-10-13 18:35:17
阅读次数:
200
POJ 3667 Hotel
题目链接
题意:有n个房间,现在有两个操作
1、找到连续长度a的空房间,入住,要尽量靠左边,如果有输出最左边的房间标号,如果没有输出0
2、清空[a, a + b - 1]的房间
思路:线段树的区间合并,记录下左边连续最长和右边连续最长空房间,和每一段的最大值,这样pushup的时候就是进行区间合并,注意查询的时候由于是要尽量左,所以先查左孩子,...
分类:
其他好文 时间:
2014-10-13 16:43:50
阅读次数:
248
题目链接:Codeforces 85D - Sum of Medians
题目大意:N个操作,add x:向集合中添加x;del x:删除集合中的x;sum:将集合排序后,将集合中所有下标i % 5 = 3的元素累加求和。
解题思路:线段树单点更新,每个点维护5个值,分别表示从该段区间中i % 5 = t的和。然后两端区间合并时只需要根据左孩子中元素的个数合并。所以有一个c表示区间上元...
分类:
其他好文 时间:
2014-10-11 19:19:36
阅读次数:
245
题目链接:hdu 1828 Picture
题目大意:N个矩形,求矩形周长的并。
解题思路:利用到线段数区间合并,记录有多少个连续块,还用到区间修改,每次对于一条边,除了要计算竖直方向,还要计算水平方向,而水平方向是修改后的增减量。
#include
#include
#include
#include
#include
using namespace std;
con...
分类:
其他好文 时间:
2014-10-03 12:44:14
阅读次数:
197
题目链接:Codeforces 46D Parking Lot
题目大意:一个街道,长为N,每辆车停进来的时候必须和前面间隔B米,和后面间隔F米,现在用两种操作,1是停进来一个长为x的车,2是第x辆车开走。
解题思路:区间合并,建一颗长度为N + B + F的线段树,然后每次停车进去的时候都查询x + B + F的区间,然后修改的时候只修改x的长度。
#include
#inclu...
分类:
其他好文 时间:
2014-10-03 11:09:14
阅读次数:
294