线段树
文章平均质量分 77
不吸血的Vampire
这个作者很懒,什么都没留下…
展开
-
线段树:HDU4217
给你一个N,K;然后又有K个数i;表示从1,2,3…N个数 经过K次操作,每次操作是去掉第i小的数。求所有去掉数的之和;#include const int MAXN=262144; int tree[MAXN<<1]; int pos; void build(int l,int r,int rt) { tree[rt]=r-l+1;//表示节点含有的数据个数 if(r==l)原创 2013-11-17 12:05:31 · 662 阅读 · 0 评论 -
划分树 模板
#include #include #include using namespace std; #define N 100500 #define MID ((l+r)>>1) int a[N],s[N],t[20][N],num[20][N],n,m; // void build(int lft,int rht,int ind) // { // if原创 2014-08-11 12:00:51 · 642 阅读 · 0 评论 -
PKU A Simple Problem with Integers (线段树区间更新求和)
题意:典型的线段树C,Q问题,有n个数a[i] (1~n),C, a, b,c在[a,b]区间增加c Q a b 求[a,b]的和。 #include #include #include #include #include #include #include #include #include #include #include using namespace std; #defi原创 2014-07-30 20:19:49 · 614 阅读 · 0 评论 -
HDU 1698 Just a Hook (线段树延迟标记(lazy))
题意:有n个数初始值都为1,m个操作a,b,c,表示把区间[a,b]变为c,求最后n个数的和。 经典区间更新求和问题,需要用到延迟标记(或者说是懒惰标记),简单老说就是每次更新 的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新或询问的时候。 #include #include #include #include #include #include #inclu原创 2014-07-30 10:56:02 · 586 阅读 · 0 评论 -
(转)线段树经典讲解
线段树(notonlysuccess经典讲解) 转载自:http://www.notonlysuccess.com/ 我最喜欢的线段树博文,没有之一。非常感谢notonlysuccess这么精彩的讲解。 线段树 很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章,当时觉得挺自豪的,还去pku打广告,但是现在我自己都不太好意思去看那篇文 章了,觉得当时的代转载 2014-07-29 14:03:42 · 572 阅读 · 0 评论 -
PKU 3667 Hotel (线段树,区间合并,最长连续区间)
题意:宾馆有N个房间(1~N),M个操作,a=1,输入b,表示N间房是否有连续的b间房,有输出最左边的房编号 没有输出0,a=2,输入b,c表示房间b到c清空。 模仿了大神的代码,敲了一遍,有些地方还要深入了解。 #include #include #include #include #include #include #define原创 2014-06-30 15:35:39 · 845 阅读 · 0 评论 -
HDU 2795 Billboard (线段树单点更新)
题意:h,w,n:有一个h*w尺寸的木板,n张1*wi的海报,贴海报的位置尽量高,尽量往左,问每张海报贴的高度 看到1 关键在怎么建树,这里我们对h进行分割,每个高度都有等长的w,我们从上往下贴,如果当前高度 (在同一高度上l==r)的长度可以满足wi则可以贴,否则继续往下寻找。 #include #include #include #include原创 2014-06-27 16:37:35 · 594 阅读 · 0 评论 -
PKU 2777 Count Color (线段树区间更新)
题意: 给你三个数:L (1 有T种颜色(1~T),然后有O个操作,初始板1~L的颜色为1,"C A B C"表示在区间A,B图上C颜色, "P A B" 表示询问 A,B区间有几种不同的颜色。 #include #include #include #include #include #define M 100000 #define L原创 2014-06-29 09:36:18 · 694 阅读 · 0 评论 -
HDU 1542 Atlantis (线段树求矩阵覆盖面积)
题意:给你n个矩阵求覆盖面积。 思路:看了别人的结题报告 给定一个矩形的左下角坐标和右上角坐标分别为:(x1,y1)、(x2,y2),对这样的一个矩形,我们构造两条线段,一条定位在x1,它在y坐标的区间是[y1,y2],并且给定一个cover域值为1;另一条线段定位在x2,区间一样是[y1,y2],给定它一个cover值为-1。根据这样的方法对每个矩形都构造两个线段,最后将所有的线段根据所定位原创 2014-06-28 17:14:51 · 984 阅读 · 0 评论 -
HDU 4027 Can you answer these queries? (线段树+区间点修改)
题意:给你 n 个数,m个询问(c,x,y) c==0 把x,y区间的值变为原来的平方根(向下取整) c==1 计算x,y区间的和。 利用1的开方永远为1剪枝。。 #include #include #include #include //#include #include #include #include #include #include #include原创 2014-05-12 19:28:08 · 592 阅读 · 0 评论 -
UVA 12299
线段树:n个数a[n],m个操作; query(a,b):求a到b区间的最小值; shift(……):shift里的数代表数组a的下标,把给定的下标的数向左移一位; 如: 7 5 6 2 4 8 5 1 4 shift(2,4,5,7) 对应的数(2 8 5 4) 则数组变为:6 8 4 5 4 1 2; #inc原创 2014-03-26 19:42:42 · 612 阅读 · 0 评论 -
HDU 1394
题意:给你n和n个数,每次把第一个数换到末尾,求逆序数,求最小的逆序数。。。。 逆序数:i>j&&a[i] 思路:每输入一个数,求它之前出现比他大的数,++,然后更新它。。就求出第一个逆序数; 每次添加一个数到末尾,逆序数=上一次逆序数+(n-a[i]-1); 序列 3 6 9 0 8 5 7 4 2 1 把3移到后面,则它的逆序数会减少3个(0 2 1)原创 2014-02-22 22:38:08 · 579 阅读 · 0 评论 -
线段树题集
目录(?)[+] 同样分成四类,不好归到前四类的都分到了其他。树状数组能做,线段树都能做(如果是内存限制例外),所以也有些树状数组的题目,会标示出来,并且放到其他类里。 一、单点更新 1.hdu1166 敌兵布阵:有N个兵营,每个兵营都给出了人数ai(下标从1开始),有四种命令,(1)”Addij",表示第i个营地增加j人。(2)“Sub i j”,表示第i个营转载 2014-01-18 20:54:50 · 572 阅读 · 0 评论 -
HDU 4417 划分树+二分
题意:有n个数,m个询问(l,r,k),问在区间[l,r] 有多少个数小于等于k。 划分树——查找区间第k大的数。。。。 利用划分树的性质,二分查找在区间[l,r]小于等于k的个数。 如果在区间第 i 大的数tmp>k,则往下找,如果tmp #include #include #include #include #include #include #inc原创 2014-08-11 22:05:02 · 634 阅读 · 0 评论