ACM_线段树 树状数组
文章平均质量分 74
cookiesMonster
这个作者很懒,什么都没留下…
展开
-
POJ 3368 Frequent values(线段树)
题意:给出一个大小为n的非降序数字序列,查询区间内出现次数最多的数字出现的次数思路:如何建树比较难想,建树前需要一些处理 观察一下,数字的范围为-100000-100000,给出的顺序非降序 让每个出现过的数字对应一个区间,a[ ]记录序列, th[ ] 记录某个位置的数字是出现的第几个数字,cnt[ ]记录这个数字出现的次数,用cnt[原创 2015-06-16 16:15:31 · 292 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers(线段树成段更新)
题意:两种操作:一、区间中每个元素加一个值,二、查询区间元素之和思路:线段树成段增减,区间求和#include #include #define lson l ,m, rt * 2#define rson m + 1, r, rt * 2 + 1long long sum[400005], col[400005];void pushup(int rt){//向上更新原创 2015-06-16 15:28:46 · 301 阅读 · 0 评论 -
HDU 2795 Billboard (线段树单点更新)
题意:有一块大小h*w的公告牌,可以在上面贴广告,每张广告大小为1*wi,优先贴在高处,左边,如果可以贴,输出贴在了第几排,否则输出-1思路:线段树记录的是某个区间能张贴的最长广告长度,更新同时查询,可以张贴时:在l == r 的位置更新最底层的值,然后向上更新时取左右子区间的最大值#include #include #define lson l, m, rt * 2#def原创 2015-06-16 15:51:20 · 268 阅读 · 0 评论 -
HDU 5372 Segment Game(线段树)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5372题意:n次操作,每次读入a,b。当a = 0,加入线段,线段开头位置为b,结尾位置为b + i ,其中 i 表示当前是第 i 个加入线段的操作。a = 1,删除线段,删除第 b 次加入线段操作时加入的线段。每次加入线段,输出已经加入的线段中有多少个线段能被现在加入的线段完全覆盖。思路:构造两个原创 2015-08-12 23:19:28 · 325 阅读 · 0 评论 -
POJ 2155 Matrix (树状数组)
题目:http://poj.org/problem?id=2155题意:有一个n*n矩阵,一开始每个格上都是0,两种操作:1)C x1 y1 x2 y2,把左上角为x1,y1,右下角为x2,y2的矩形范围的格子反转,0变1,1变0;2)Q x y,问x,y这个格子现在是0还是1思路:想了好久的二维树状数组。。。。考虑一维翻转区间[ i,j ]的情况:更新:首先i原创 2015-10-19 17:59:14 · 351 阅读 · 0 评论 -
POJ 2352 Stars (树状数组)
题目:http://poj.org/problem?id=2352题意:有n个点(x , y),坐标按y递增(y同时按x递增)给出,对于每个点,判断有多少个点在它坐下方(包括左边很右边)。依次输出有多少个点左下方有0个点、1个点……n-1各点。思路:树状数组记录dp[ i ]记录有多少个点的x坐标小于等于i,因为x,y可以等于0,所以 dp[ x ] 对于坐标 x-1。#include原创 2015-10-19 16:05:30 · 240 阅读 · 0 评论 -
POJ 3321 Apple Tree (树状数组)
题目:http://poj.org/problem?id=3321题意:给出一颗树,一开始树是满的(每个结点都有苹果)两种操作;1)C x ,x结点有苹果则摘掉这个苹果,否则加上一个苹果;2)Q x ,询问结点x为根的子树上共有多少苹果(包括x上的苹果)思路:关键是把这颗树转化为树状数组,一颗子树中的结点要占连续的空间,访问时才方便方法是dfs给各个结点编号。每个结点对应两个编号:原创 2015-10-19 16:20:19 · 413 阅读 · 0 评论