http://poj.org/problem?id=2828一开始敲了个splay,直接模拟。tle了。。常数太大。。好吧,说是用线段树。。而且思想很拽。。(貌似很久以前写过貌似的,,)我们线段树维护的区间不再是人了。。而是这个区间剩余的的座位。。比如我现在要坐第一张,但是人已经坐了,即这个区间已经...
分类:
其他好文 时间:
2014-08-28 20:59:26
阅读次数:
1012
题意:给n个矩形,求矩形周长并解法:跟求矩形面积并差不多,不过线段树节点记录的为:len: 此区间线段长度cover: 此区间是否被整个覆盖lmark,rmark: 此区间左右端点是否被覆盖num: 此区间分离开的线段的条数重点在转移的地方,不难理解。代码:#include #include #in...
分类:
其他好文 时间:
2014-08-28 13:09:09
阅读次数:
225
1、 线段树是二叉树,且必定是平衡二叉树,但不一定是完全二叉树。2、 对于区间[a,b],令mid=(a+b)/2,则其左子树为[a,mid],右子树为[mid+1,b],当a==b时,该区间为线段树的叶子,无需继续往下划分。3、 线段树虽然不是完全二叉树,但是可以用完全二叉树的方式去构造并存储它,...
分类:
其他好文 时间:
2014-08-28 11:14:29
阅读次数:
194
题意:给出n个矩形,求矩形中被覆盖K次以上的面积的和。解法:整体与求矩形面积并差不多,不过在更新pushup改变len的时候,要有一层循环,来更新tree[rt].len[i],其中tree[rt].len[i]表示覆盖次数大于等于i的线段长度,以便求面积,最后只要每次都用tree[1].len[K...
分类:
其他好文 时间:
2014-08-28 11:08:19
阅读次数:
315
题目链接:uva 1455 - Kingdom
题目大意:平面上又n个城市,初始时城市之间没有任何双向道路相连,要求一次执行指令。
road A B :在城市A和城市B之间连接一条双向道路line C:询问一条y=C的水平线上穿过多少州和这些州总共有多少城市。
一个联通分量算一个州,C保证为小数部分为0.5的实数。
解题思路:线段树维护每个位置上州和城市的个数,并查集维护哪些城...
分类:
其他好文 时间:
2014-08-28 00:55:48
阅读次数:
297
题目:Given N integers A={A[0],A[1],...,A[N-1]}. Here we have some operations:(元素和操作元素 2 #include 3 #include 4 #include 5 #include 6 #define mem...
分类:
其他好文 时间:
2014-08-27 21:53:28
阅读次数:
355
题意:
给出一排敌军的血量,每次攻击都能将范围内的敌军血量变为原来血量的算术平方根(下取整),并询问范围内敌军的血量和。
分析:
显然的线段树,但是似乎不太好设计lazy标记啊,我们想一想算术平方根,sqrt(1)=1,且64位整数范围内最多6次就变到1了,那么只要区间内的数都为1,我就不用更新这个区间了,所以每次更新都更新到叶子结点,维护区间和就行了。数据里没有0,不过X>Y这种trick有意思吗?...
分类:
其他好文 时间:
2014-08-27 20:36:58
阅读次数:
266
题目链接:uva 11983 - Weird Advertisement
题目大意:给定n个矩形,问说有多少区域的面积被覆盖k次以上。
解题思路:将每个矩形差分成两条线段,一段为添加覆盖值1,一段为减少覆盖值1,同时记录两段的高度(横坐标)。然后对纵坐标离散化建立线段树,然后对线段按照高度排序,维护整段区间中覆盖度大于K的长度,乘上高度上的范围即可。
#include
#inclu...
分类:
其他好文 时间:
2014-08-27 18:52:48
阅读次数:
280
每一行都建一个线段树。。。。
Fast Matrix Operations
There is a matrix containing at most 106 elements divided into r rows and c columns. Each element has a
location (x,y) where 1
1 x1 y1 x2 y2 v
...
分类:
其他好文 时间:
2014-08-27 18:50:58
阅读次数:
199
题目链接:uva 1492 - Adding New Machine
题目大意:在一个R?C矩阵上有N台旧的机器,给定每个机器的占地,现在要添加一台1?M的机器,问有多少种摆放方法。
解题思路:问题可以转化成矩形覆盖问题,对于每台旧的机器,假设考虑对应每个位置向右放,那么左边的M-1个位置是不能放的,以及右边界左边的M-1个位置。用线段树解决矩形覆盖,x,y坐标分别处理一次。注意M=1...
分类:
其他好文 时间:
2014-08-27 18:47:18
阅读次数:
274