线段树
萌之上荡漾
这个作者很懒,什么都没留下…
展开
-
poj 2763 Housewife Wind
题目链接分析:这道题是树链剖分的裸题,把边的信息保存在深度大的那个节点上就行了。 一开始写的邻接表,居然TLE了。后来百度发现有人说前向星跑得比较快?我不是很明白,但是改成前向星以后的确快了很多,邻接表是T,而前向星只需要2s左右。这个代码还是邻接表,因为我不信,又修改了一下邻接表上几个我觉得会增加常数的地方,交上去还是T了- -代码里前向星的部分被注释掉了。/******************原创 2016-09-15 11:24:40 · 240 阅读 · 0 评论 -
csu 1809 Parenthesis
题目见此分析,把‘(’当成1, ‘)’当成-1, 计算前缀和sum。 记交换括号左边的序号为u, 右边为v,讨论左右括号: 1、s[u] == ‘(’ && s[v] == ‘)’ 那么[u, v - 1]的前缀和会全部-2 2、s[u] == ‘(’ && s[v] == ‘(’ 显然 3、s[u] == ‘)’ && s[v] == ‘(’ 那么[u, v - 1]的前缀和会全部+原创 2016-09-05 18:10:03 · 274 阅读 · 0 评论 -
Codeforces Round #373 (Div. 2) E. Sasha and Array
题目链接分析:矩阵快速幂+线段树 斐波那契数列的计算是矩阵快速幂的模板题,这个也没什么很多好解释的,学了矩阵快速幂应该就知道的东西= =这道题比较巧妙的在于需要用线段树来维护矩阵,达到快速查询区间斐波那契数列和的目的。这道题极为卡常数,我TLE了不知道多少发,才在赛后过了这道题。我尝试下来,发现矩阵乘法的写法极为重要,我就是因为用了三层循环来写矩阵乘法导致了悲剧的TLE,一直卡在了第17组数据。我百原创 2016-09-27 20:30:20 · 251 阅读 · 0 评论 -
51nod 1672 区间交
题目链接分析: 从左往右扫,如果进入一个区间的左端点,计数器加一,出去一个区间的又端点,计数器减一。这样就能在O(N)O(N)的时间内判断出可行的区间。 因为a[i]>=0,所以需要让区间的交集的长度尽可能大。 考虑每次从一个区间的右端点出来的情况。假设当前区间被使用到。现在确定了右端点,只需要找左端点在哪里就行了。因为左端点要尽可能远离右端点,所以在所有覆盖当前右端点的区间中找一个第K小的左原创 2017-04-05 15:46:24 · 421 阅读 · 0 评论 -
hdu 5091 beam cannon
题目链接题目大意: 在平面内有一些点,现在给定一个矩形框,求矩形框能包含最多点的个数。分析: 可以转化成一维的线段树。先确定横坐标的范围,这样只需要找满足纵坐标最大的差小于等于矩形框的高的最多的点就行了。把纵坐标做成线段树,以每个点的纵坐标为起点,长度为矩形框的高在线段树上覆盖。如果有两个线段覆盖了同一段区域,那么说明可以找到一个矩形同时覆盖这两个点。所以题目转化成了找线段树中最大的线段覆盖数。原创 2017-05-06 14:24:39 · 279 阅读 · 0 评论