
单点更新
YouthDance
JUST DO IT
展开
-
HDU1166 敌兵布阵
题目意思是中文的,相信大家都看得懂不解释。 普通的单点更新线段树,无坑无陷阱。 因为,做的线段树题不多,所以没有自己的代码风格。正在建立自己的风格中。 虽然,以前早就写了N遍这道题了,但是这次要把线段树的大部分题都过一遍,所以这题也写了一下,并且更改了以往的代码风格。 #include #include #include #define lson l,m,rt << 1 #defi原创 2014-08-05 11:04:23 · 664 阅读 · 0 评论 -
HDU I Hate It
题目意思很简单,很裸的线段树。 有是一道单点更新问题,是单点更新+区间最大值。 #include #include #include #include using namespace std; #define L(x) (x<<1) #define R(x) (x<<1|1) #define lson lft,mid,rt << 1 #define rson mid+1,rh原创 2014-08-07 10:01:13 · 780 阅读 · 0 评论 -
HDU Minimum Inversion Number
经典的线段树求解逆序数问题。 运用了一个逆序数的性质,如果一个数从首位换到尾位,这其逆序数将减少y[i],增加n-y[i]-1。 举个例子说明,如果一个排列3 1 2 0 4本来三前面应该有三个数比他小的,但是现在3在首位,则说明3产生的逆序数有3个,而将3换到尾位后,就说明比3大的都在3前面了,所以此时3的逆序数有n-y[i]-1(5-3-1 = 1). 线段树的话,先建立一个空原创 2014-08-07 11:55:57 · 825 阅读 · 0 评论 -
HDU Billboard
题目分析:给你n张海报,一个宣传板。让你在满足海报可以贴在最高位置的时候则贴的最高,无法满足时贴的最靠左,输出海报所贴的高度。如果不能贴则输出-1. 一道很简单,但是我没想出的基础线段树。 算法思想: 把宣传板的高度转换成线段树的区间,从而得知每一个区间的大小当然为宣传板的宽度啦。然后,每次查询每个区间内的大小是否有满足当前海报宽度的,有责得到结果。然后,在更新减去当前所用的宽度原创 2014-08-07 18:02:34 · 883 阅读 · 0 评论 -
POJ Buy Tickets
题目分析: 给你N个人的队列,每个人都有想站的位置,要你从前往后的给他们排序,输出最后的结果。注意,后面的人会覆盖前面的。就是是原本在该位置上的人往后移动一个位置。 算法分析: 我们可以把总人数当作区间的大小,然后结果就是把区间的每一个位置都放上人,就是答案了。 而从题目中我们可以知道,后面的人是不受前面的人的影响的。所以,我们可以倒这来模拟过程。 如何模拟呢?我们可以想到原创 2014-08-08 10:33:54 · 924 阅读 · 0 评论