随笔分类 - 数据结构 线段树
摘要:链接: http://codeforces.com/contest/242/problem/E 题意: 维护一个长度为n的数列,有2中操作 1.询问[l,r]的区间和 2.将[l,r]之间的所有数都异或x 题解: 用线段树来维护每一位1的个数就可以了 代码:
阅读全文
摘要:链接: 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
阅读全文
摘要:链接: http://codeforces.com/contest/145/problem/E 题意: 维护一个只有数字4和7的数列,以下有两种操作: 1.将[l,r]区间4变为7,7变为4。 2.询问全局最长不下降子序列的长度。 输出所有2操作的答案 题解: 线段树维护。 维护四个信息: 1.区间
阅读全文
摘要:链接: http://codeforces.com/contest/818/problem/E 题意: 给你n个数,问有多少个子串的乘积模k等于0 题解: 我们先用线段树保存每一段的乘积%k 然后枚举每一个位置i,二分找到最后一个pos,使得从pos到i之间的乘积能被k整除 这样从1到pos之间任意
阅读全文
摘要:链接: http://codeforces.com/contest/833/problem/B 题意: 给你n个数,分成k段,每段的值为其中不同的数的个数,求每段的值的和的最大值 题解: 显然需要用到动态规划。我们用dp[i][j]表示前j个数分成i段价值和的最大值。容易得到状态转移方程为 dp[i
阅读全文
摘要:链接: http://poj.org/problem?id=2777 题意: 有L个气球,开始颜色为1,每次给l,r之间的气球染色x,然后询问l,r区间有多少种不同的颜色 题解: 因为颜色最多有30种,所以对这30中颜色状态压缩一下,放在线段树里面,这样就容易更新了 最后只要计算一下query返回值
阅读全文
摘要:链接: http://poj.org/problem?id=2182 题意: 有N头牛,编号1~N,乱序排成一列,现在已知每头牛前面有多少头牛比它的编号小, 求排队后从前往后数,每头牛的编号 题解: 从后往前扫描,遇到数字a,说明它是剩余序列中的第a+1个数,找到改编号并删除。 代码:
阅读全文
摘要:链接: http://acm.hdu.edu.cn/showproblem.php?pid=1828 代码:
阅读全文
摘要:链接: http://acm.hdu.edu.cn/showproblem.php?pid=1542 题意: 给你n个矩形,问你这个矩形覆盖的面积 题解: 就是线段树+扫描线+坐标离散化,详情在代码里面 代码:
阅读全文
摘要:链接: 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[]分别
阅读全文
摘要:链接: http://poj.org/problem?id=3667 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=3468 题解: 就是普通的线段树区间更新,区间求和 代码:
阅读全文
摘要:链接: http://acm.hdu.edu.cn/showproblem.php?pid=1556 题解: 之前偷懒使用前缀和写的,最近要复习一下线段树,所以又用线段树写了一下 另外是时候修改一下自己的//head了 代码:
阅读全文

浙公网安备 33010602011771号