
线段树
文章平均质量分 76
lp_opai
我没有时间写一封简短的信,所以我写了一封长的。
展开
-
zoj 2706 Thermal Death of the Universe (线段树区间更新,区间求和)
/* 题意:给n个数,m个操作,每次把区间[l,r]的数用它们的平均值替代, 如果平均值不是整数,且当前n个数的和小于原先的和就向上round,不然就向下round;*/#include # include using namespace std;#define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1/原创 2014-11-16 19:35:57 · 774 阅读 · 0 评论 -
hdu 5316 Magician (线段树)
/*题意:求一个区间内的最大的子序列的和:要求必须子序列中相邻的数下标奇偶性不同。维护区间内的 开始奇结束偶开始奇结束奇开始偶结束奇开始偶结束偶*/# include # include # include using namespace std;# define lson l,m,rt<<1# define rson m+1,r,rt<<1|1# define原创 2015-07-29 18:35:13 · 475 阅读 · 0 评论 -
hdu 4638 Group (离线树状数组)
/*题意: 在l到r之间有多少段连续的数 离线处理每个查询,遍历每个点,设当前处理的区间终点为R, 处理每个查询的时候,首先假设所有的数a[i]都是自己独立成段, 如果有a[i]+1,或者a[i]-1的数在区间[L,R]内,那么它肯定不是独立成段的, 也就是我们要减去在[L,R]内不独立成段的数的个数。 问题就转化为查询[L,R]之前不独立成段原创 2015-08-01 21:22:48 · 428 阅读 · 0 评论 -
hdu 2852 KiKi's K-Number (树状数组)
/*题意:给定一个容器,里面存放各种数值,规定三个操作,一个是在容器中增加一个数值,一个是在容器中删掉一个数值,一个是询问容器中比a大的数中第k大的数,将其输出。如果在删除过程中没有这个数,则输出"No Elment!"如果容器中没有比a大的第k个数,则输出"Not Find!".*/# include # include # include # include using n原创 2015-08-02 19:17:00 · 356 阅读 · 0 评论 -
hdu 4902 Nice boat (线段树)
/*题意:给你n个数q个询问:q==1时 l到r区间的数更新为xq==2时 l到r区间的数更新为gcd(a[i],x)输出变化之后的n个数*///模拟# include # include # include # include using namespace std;# define N 100005int a[N],e[N];int b[N],c[N]原创 2015-08-02 22:01:45 · 399 阅读 · 0 评论 -
hdu 4893 Wow! Such Sequence! (线段树 区间更新+单点更新)
/*1 k d 第k个数加d2 l r 查询l到r的和3 l r l到r更新到最近的f[]*/# include # include # include using namespace std;# define lson l,m,rt<<1# define rson m+1,r,rt<<1|1# define N 100005__int64 sum[N<<2],need[N原创 2015-08-03 21:22:54 · 371 阅读 · 0 评论 -
hdu 4266 The Worm in the Apple (线段树)
/*题意:给你N个花瓶,编号是0 到 N - 1 ,初始状态花瓶是空的,每个花瓶最多插一朵花。然后有2个操作。操作1,a b c ,往在a位置后面(包括a)插b朵花,输出插入的首位置和末位置。操作2,a b ,输出区间[a , b ]范围内的花的数量,然后全部清空。很显然这是一道线段树。区间更新,区间求和,这些基本的操作线段树都可以logN的时间范围内完成。操作2,很显然就是线段原创 2015-07-24 20:52:47 · 456 阅读 · 0 评论