ACM_Segment_Tree
文章平均质量分 80
Gatevin
这个作者很懒,什么都没留下…
展开
-
HDU 4117 GRE Words (AC自动机 + 线段树优化DP) 2011年成都现场赛G题
题目大意:就是现在给出n (n 大致思路:首先不难想到建立n个串的AC自动机, 用dp[i]表示最终剩下的串以第i个串结尾的的方案中权值和的最大值那么dp[i] = max(dp[j] + w[i]) 1 显然如果这么直接dp的话讲所有穿建立自动机然后遍历, 直接DP时间复杂度是O(n*n + 2*m), m是字符串总长度那么由于n的限制, 这个方案是不接受的于原创 2015-05-20 20:02:22 · 1828 阅读 · 3 评论 -
HDU 5217 Brackets 线段树
题目大意:给出括号序列然后两种操作:1.修改某个括号为另外一种2.询问在区间[L, R]中的括号在忽略掉匹配好的括号之后第K个括号的位置, 即没有匹配的括号中第K个的位置大致思路:首先可以对于括号序列建立线段树, 线段树每个节点表示当前区间[L, R]中没有匹配的')'数量和'('数量, 这个是可以满足区间合并的那么对于每次询问当没匹配的')'和‘(‘总数不够K时就原创 2015-09-10 21:46:34 · 659 阅读 · 0 评论 -
UESTC 360 Another LCIS (线段树 维护LCIS)
题目大意:就是对于数列S, 长度不超过1e5, 有两种操作, 第一种是将一个区间当中的所有数加上一个值, 你一种是询问一个区间中的LCIS的长度, LCIS指最长连续上升子序列大致思路:考虑到线段树维护两个区间的时候满足的是广义的加法, 那么要通过两个区间的LCIS的信息得到合并的区间的LCIS的信息的话, 就需要维护者6个元素:对于每一个子区间, 维护:1. 区间左界原创 2015-08-18 19:35:46 · 564 阅读 · 0 评论 -
POJ 3225 Help with Intervals (线段树 成段更新, 懒惰标记*2)
题目大意:就是现在模拟实现区间的交并补差一系列操作, 输出最后得到的区间大致思路:首先对于区间开出两倍长度用奇数位表示区间(a, a + 1)偶数段表示端点a, a + 1之类然后对于区间上的操作用0表示这一段在区间中, 用1表示不在那么对于交和并不难映射到对应的区间更改为0和1的操作中但是在处理差的时候需要用到区间取异或值的操作于是需要用到两个懒惰标记, 一个原创 2015-08-17 16:18:03 · 481 阅读 · 0 评论 -
POJ 2991 Crane (线段树 维护旋转的向量和)
题目大意:就是多个木棍初始摆在y轴上相邻的木棍间有连接着他们的东西, 相当于关节然后每次操作旋转某个关节, 求旋转后的端点的坐标大致思路:首先将所有的木棍拆成多个向量, 那么考虑到向量的和v1 + v2 + ... + vk即为顶点的坐标, 并且多个向量的和旋转得到的角, 和这所有的向量都旋转同样的角再求和得到的向量是同样的也就是说向量的旋转的时机不影响加法运算于是可以原创 2015-08-18 00:02:31 · 534 阅读 · 0 评论 -
POJ 1436 Horizontally Visible Segments (线段树水过)
题目大意:就是现在给出n 大致思路:表示没有想到比较靠谱的计数方法, 用线段树处理出各个线段的可视情况之后如何计数感觉网上说的三重循环枚举的计数方法不可靠但是还没有想到比较好的方法, 先水过去了...注意纵坐标都乘上了2的原因是为了处理这一类情况:前面有线段(2, 0)->(2, 2) 和线段(2, 3)->(2, 5)那么当出现(3, 1)->(3, 4)的时候这原创 2015-08-17 18:56:29 · 450 阅读 · 0 评论 -
HDU 1698 Just a Hook (线段树 成段更新)
题目大意:就是现在一串钩子初始每个部分价值为1, 每次操作修改其中连续的一整段的价值, 问经过Q次操作之后整串钩子的总价值钩子长度N 大致思路:就是用懒惰标记来进行延迟更新, 使得每次更新的复杂度保持在O(logn)的级别, 注意一下懒惰标记的下推即可代码如下:Result : Accepted Memory : 1684 KB Ti原创 2015-08-16 11:04:17 · 489 阅读 · 0 评论 -
POJ 2528 Mayor's posters (线段树+离散化 成段替换)
题目大意:就是在一段区间上贴海报, 后来的区间会把前面来的区间覆盖掉, 为贴完海报后能看到几张海报(只看到一部分也算看到)大致思路:就是区间替换更新, 标记一下当前区间的所有的海报是否一致, 用懒惰标记标记一下当前区间的类别听说数据比较水...布吉岛严格的数据下这个代码还能过不= =代码如下:Result : Accepted Memor原创 2015-08-16 22:49:07 · 593 阅读 · 0 评论 -
POJ 2886 Who Gets the Most Candies? (线段树 约瑟夫环问题变种)
题目大意:就是现在有一些孩子坐成一圈, 每个人手里有一个数字(正数或者负数), 孩子们编号1~n, n那么, 第一次由编号为K的人跳出, 然后根据其手上的数顺时针或者逆时针决定下一个人第p个出去的人能得到p的约数个糖果, 问那个人得到的糖果最多大致思路:就是约瑟夫环的变种, 每次可能顺时针或者逆时针数出下一个人那么用线段树的结点表示对应区间内还剩下的人的个数于是原创 2015-08-16 01:04:14 · 483 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers (线段树 区间增减 区间求和)
题目大意:中文题面, 就是成段加减, 询问区间和大致思路:练习一下懒惰标记...就是一个简单的懒惰标记向下递推代码如下:Result : Accepted Memory : 4256 KB Time : 1782 ms/* * Author: Gatevin * Created Time: 2015/8/16 19:53:0原创 2015-08-16 20:36:23 · 432 阅读 · 0 评论 -
POJ 2828 Buy Tickets (线段树 单点更新 查询右界)
题目大意:就是告诉N个人依次插队的顺序要求输出最终的序列大致思路:对于整个插入倒着执行, 那么前面的插入不会影响后面插入的人记初始数组为[0, 1, 1, 1, ...., 1]一共n + 1个数下标从0到n那么每次就相当于找出当前前缀和大于p的插入(p, value)然后更新找到的位置的值为0即可查询操作用线段树维护, 单点修改也是代码如下:原创 2015-08-15 23:27:03 · 479 阅读 · 0 评论 -
HDU 2795 Billboard (线段树 单点更新, 询问位置)
题目大意:就是h*w的板, 每次向上面空白位置贴1*w的条(不能旋转)问每次贴能找到的最上面的位置大致思路:线段树练习题, 刷刷刷代码如下:Result : Accepted Memory : 3668 KB Time : 3120 ms/* * Author: Gatevin * Created Time: 2015/原创 2015-08-14 23:10:41 · 578 阅读 · 0 评论 -
HDU 1754 I Hate It (线段树 单点替换, 区间最值)
题目大意:中文题面就是可以每次替换一个数, 或者查询区间最大值大致思路:线段树专题速度刷....没什么好说的....练练手..代码如下:Result : Accepted Memory : 3680 KB Time : 1092 ms/* * Author: Gatevin * Created Time: 2015/原创 2015-08-14 21:55:44 · 553 阅读 · 0 评论 -
HDU 1394 Minimum Inversion Number (线段树 求逆序对)
题目大意:就是求逆序对之后O(1)递推每一种变化对应的逆序对数量的最小值大致思路:....刷代码如下:Result : Accepted Memory : 1644 KB Time : 93 ms/* * Author: Gatevin * Created Time: 2015/8/14 22:01:45 * File N原创 2015-08-14 22:20:19 · 474 阅读 · 0 评论 -
HDU 1166 敌兵布阵 (线段树 单点增减, 区间求和)
题目大意:中文题面就是区间中单点增减, 区间求和大致思路:线段树练手题1....还是得系统地学一下线段树才能少一些疑虑代码如下:Result : Accepted Memory : 2136 KB Time : 249 ms/* * Author: Gatevin * Created Time: 2015/8/14 21原创 2015-08-14 21:42:03 · 548 阅读 · 0 评论 -
HDU 5069 Harry And Biological Teacher AC自动机 + 线段树优化 (BestCoder Round 14 D)
题目大意:就是对于给出的n个字符串(n 大致思路:首先这个题可以用AC自动机或者后缀自动机来做, 我使用的是AC自动机, 将输入的所有串建立一个AC自动机, 对于每一个串A的后缀和串B的前缀进行匹配, 其实就是串A在AC自动机上结尾的点的位置沿着fail指针向上走能够走到的与串B在AC自动机上匹配时经过的位置, 那么我们对于所有B相同的询问一起处理, 也就是现将所有的AC自动机原创 2015-05-28 15:44:45 · 1277 阅读 · 0 评论 -
UESTC 94 Bracket Sequence (线段树 区间修改)
题目大意:就是对于一个由'('和')‘组成的括号序列, 现在又3种操作, 第一种是将某个区间的所有括号修改成'('或者')', 第二种是将某个区间的所有字符反向'('变成')', ')'变成'(', 第三种是询问某个区间中的括号序列是否是一个号的序列定义好的序列:1.空序列是好序列2.如果A是好序列那么'(' + A + ')'也是好序列3. 如果A, B是好序列那么A + B原创 2015-08-19 23:28:19 · 649 阅读 · 0 评论