ACM_线段树
文章平均质量分 77
ACM_sjtsjt
不忘初心 追求美好
展开
-
hdu 2852 线段树 单点更新
主要是查询的时候 本来时间就比较紧 查询的时候直接暴力二分求答案 超时 看了下别人代码 主要是find的时候要直接find速度快了很多 #include #include #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 const int N=100000; using namespace std; int sum[N<<3],ans原创 2016-05-26 01:18:54 · 297 阅读 · 0 评论 -
hdu 3874 线段树 离线查询
要求一个区间所有数之和 求和时要去重 离线查询 先把所有查询离线 然后按照右端点排序 每次保证加入后一个数的时候线段树中没有和他重复的 如果重复就把前一个删掉 这样由于之前排序过 保证不会漏解 #include #include #include #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 using namespace std原创 2016-05-26 01:21:55 · 461 阅读 · 0 评论 -
poj 2828 线段树 单点更新
题意:有N个人排队,每一个人都有一个val来对应,每一个后来人都会插入当前队伍的某一个位置pos后面。要求把队伍最后的状态输出。 题解:一看到这种题目如果之前做过类似的题目很容易就可以想到要倒序完成 因为这样每个数插入的位置在当前都是可以确定的,sum记录当前线段的空位数 #include #include using namespace std; #define lson l,mid,rt<原创 2016-05-31 00:28:55 · 274 阅读 · 0 评论 -
poj 2886 线段树 单点更新
题意:N个小孩围成一圈,玩约瑟夫环,每个小孩有一张卡片上面是数字a,正数代表右手边第a个小孩出队,负数表示左手边,游戏从第k个小孩开始,游戏直到所有小孩出队为止,第p个出队小孩得到f[p]分数,f[p]为p的因子数 题解:这里引入反素数的概念不清楚可以看http://blog.csdn.net/ACdreamers/article/details/25049767 每次询问只要从第一个出队的运原创 2016-05-31 01:01:44 · 293 阅读 · 0 评论 -
.CodeforcesBeta Round #19 D. Points 线段树 单点更新
题意:三个操作均在二维坐标轴上进行 Add(x,y)加入一个点 remove移出一个点 find寻找最小的坐标严格大于当前点的坐标 没有输出-1 x优先级大于y 题解:因为是在二维坐标轴上操作所以可以将所有操作按照x轴排序,然后把x轴坐标当成线段树的区间,y区间当做线段树权值,线段树记录当前线段最大y值,这样一来query就和常规线段树不太一样 #include #include #inclu原创 2016-05-31 01:19:53 · 258 阅读 · 0 评论 -
【poj】2481 Cows【线段树单点更新】
题意: 有N头牛 每头牛有一个[S,E]值 要求找出所有牛j使得Si Ej - Sj 对每头牛输出这样的牛的个数原创 2016-05-31 23:25:24 · 294 阅读 · 0 评论 -
hdu 5381 线段树区间合并
gcd运算的时候 如果之前的保持不变 新加入一个数进行gcd运算 得到的答案只会越来越小 这题要我们求[l.r]中所有子区间的gcd值之和 我们就要尽量保存子区间的gcd在合并区间的时候以尽可能快的速度合并 我们可以知道gcd的数量是log级别的 所以我们可以保存Rg[32],Rn[32],Rc,分别记录的是[i,r](i>=l)的不同gcd值,不同gcd值的数量,有多少种不同的gcd值原创 2016-05-21 10:06:48 · 593 阅读 · 0 评论