随笔分类 -  数据结构 线段树

摘要:链接: http://codeforces.com/contest/242/problem/E 题意: 维护一个长度为n的数列,有2中操作 1.询问[l,r]的区间和 2.将[l,r]之间的所有数都异或x 题解: 用线段树来维护每一位1的个数就可以了 代码: 阅读全文
posted @ 2017-08-18 12:36 Flowersea 阅读(137) 评论(0) 推荐(0)
摘要:链接: http://codeforces.com/contest/718/problem/C 题意: 维护一个长度为n的数列a,支持下面两个操作: 1 l r x — increase all integers on the segment from l to r by values x; 2 l 阅读全文
posted @ 2017-08-18 01:25 Flowersea 阅读(136) 评论(0) 推荐(1)
摘要:链接: http://codeforces.com/contest/145/problem/E 题意: 维护一个只有数字4和7的数列,以下有两种操作: 1.将[l,r]区间4变为7,7变为4。 2.询问全局最长不下降子序列的长度。 输出所有2操作的答案 题解: 线段树维护。 维护四个信息: 1.区间 阅读全文
posted @ 2017-08-17 22:18 Flowersea 阅读(187) 评论(0) 推荐(0)
摘要:链接: http://codeforces.com/contest/818/problem/E 题意: 给你n个数,问有多少个子串的乘积模k等于0 题解: 我们先用线段树保存每一段的乘积%k 然后枚举每一个位置i,二分找到最后一个pos,使得从pos到i之间的乘积能被k整除 这样从1到pos之间任意 阅读全文
posted @ 2017-08-14 17:28 Flowersea 阅读(121) 评论(0) 推荐(0)
摘要:链接: http://codeforces.com/contest/833/problem/B 题意: 给你n个数,分成k段,每段的值为其中不同的数的个数,求每段的值的和的最大值 题解: 显然需要用到动态规划。我们用dp[i][j]表示前j个数分成i段价值和的最大值。容易得到状态转移方程为 dp[i 阅读全文
posted @ 2017-08-14 13:22 Flowersea 阅读(168) 评论(0) 推荐(1)
摘要:链接: http://poj.org/problem?id=2777 题意: 有L个气球,开始颜色为1,每次给l,r之间的气球染色x,然后询问l,r区间有多少种不同的颜色 题解: 因为颜色最多有30种,所以对这30中颜色状态压缩一下,放在线段树里面,这样就容易更新了 最后只要计算一下query返回值 阅读全文
posted @ 2017-08-13 22:52 Flowersea 阅读(187) 评论(2) 推荐(2)
摘要:链接: http://poj.org/problem?id=2182 题意: 有N头牛,编号1~N,乱序排成一列,现在已知每头牛前面有多少头牛比它的编号小, 求排队后从前往后数,每头牛的编号 题解: 从后往前扫描,遇到数字a,说明它是剩余序列中的第a+1个数,找到改编号并删除。 代码: 阅读全文
posted @ 2017-04-29 17:08 Flowersea 阅读(269) 评论(3) 推荐(1)
摘要:链接: http://acm.hdu.edu.cn/showproblem.php?pid=1828 代码: 阅读全文
posted @ 2017-04-14 07:38 Flowersea 阅读(552) 评论(0) 推荐(0)
摘要:链接: http://acm.hdu.edu.cn/showproblem.php?pid=1542 题意: 给你n个矩形,问你这个矩形覆盖的面积 题解: 就是线段树+扫描线+坐标离散化,详情在代码里面 代码: 阅读全文
posted @ 2017-04-13 21:46 Flowersea 阅读(250) 评论(0) 推荐(0)
摘要:链接: http://acm.hdu.edu.cn/showproblem.php?pid=3911 题意: 给出01串 1代表黑色 0代表白色 0 a b:询问[a,b]中1的连续最大长度 1 a,b:把[a,b]区间的0->1 1->0 题解: lsum1[],rsum1[],msum1[]分别 阅读全文
posted @ 2017-04-12 22:50 Flowersea 阅读(187) 评论(0) 推荐(0)
摘要:链接: http://poj.org/problem?id=3667 代码: 阅读全文
posted @ 2017-04-12 17:21 Flowersea 阅读(196) 评论(3) 推荐(1)
摘要:链接: http://poj.org/problem?id=3468 题解: 就是普通的线段树区间更新,区间求和 代码: 阅读全文
posted @ 2017-04-12 14:51 Flowersea 阅读(173) 评论(2) 推荐(1)
摘要:链接: http://acm.hdu.edu.cn/showproblem.php?pid=1556 题解: 之前偷懒使用前缀和写的,最近要复习一下线段树,所以又用线段树写了一下 另外是时候修改一下自己的//head了 代码: 阅读全文
posted @ 2017-04-12 13:57 Flowersea 阅读(337) 评论(3) 推荐(2)