
ACM-树状数组|线段树
yew1eb
https://github.com/yew1eb
展开
-
hoj 2275 Number sequence(树状数组)
题意问你在序列中有多少个这样的关系式:ai ak (i两次使用树状数组。 注意:ai可以为0!!/*This Code is Submitted by yew1eb for Problem 2275 at 2014-01-13 11:14:55*/#include #include #define MAXA 32768#define MAXN 50000 +原创 2014-01-13 11:19:55 · 1939 阅读 · 0 评论 -
线段树习题集
线段树习题集大部分来源于@NotOnlySuccess 一、点修改最最基础的线段树,只更新叶子节点,然后把信息用PushUp(int rt)这个函数更新上来hdu1166 敌兵布阵线段树功能:update:单点增减 query:区间求和解题报告hdu1754 I Hate It线段树功能:update:单点替换 query:区间最值解原创 2014-02-17 11:14:22 · 3911 阅读 · 0 评论 -
树状数组习题总结
TopCoder Tutorials:http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=binaryIndexedTrees#prob 1、要向上统计,向下修改;一般是修改一段区间的值,查找的是某个位上的值;2、要向上修改,向下统计;一般是修改某个位置上的值,查找的是一段区间的和;可以用树状数组的地方,一定可以用线段树原创 2013-08-24 08:32:52 · 2448 阅读 · 0 评论 -
UVA-1400 Ray, Pass me the Dishes, LA 3938 , 线段树,区间查询
题意:给出一列数(n个),m次查询区间[l,r]的最大连续区间[x,y](l思路:动态查询区间最大连续区间;如果是求最大连续区间和:用线段树维护最大连续和sum_sub、最大前缀和sum_prefix、最大后缀和sum_suffix。root.sum_sub = max{l.sum_sub, r.sum_sub, (l.sum_suffix + r.sum_prefix)原创 2014-07-15 21:27:52 · 2027 阅读 · 0 评论 -
hdu1166 敌兵布阵
题意要求支持三个操作。Add(i,j); //点i处增加jSub(i,j); //点i处减少jQuery(i,j); //查询区间[i,j]的和1、树状数组#include #include typedef int LL;const int MAXN = 50000 + 10;int C[MAXN], n;原创 2013-12-16 20:32:45 · 2174 阅读 · 0 评论 -
hdu 1823 Luck and Love ,二维线段树
Luck and LoveTime Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5282 Accepted Submission(s): 1324Input本题有多个测试数据,第一个数字M,表示接下来有连续的M个操原创 2014-08-06 12:04:09 · 1905 阅读 · 2 评论 -
Uva 11297 Census,二维线段树,板子
维护二维矩阵。q x1, y1, x2, y2 : 查询x1c x, y, v: 修改(x,y) = v。矩阵大小(n,m查询次数q#includeusing namespace std;const int INF = 1<<30;const int maxn = 2000 + 10;int A[maxn][maxn原创 2014-08-06 09:36:16 · 2131 阅读 · 0 评论 -
hdu4893 Wow! Such Sequence!,树状数组,线段树,单点修改,区间更新
2014 Multi-University Training Contest 3 1007题点击打开链接单点修改,区间更新(线段树Lazy标记)树状数组:/*优化:1、用set容器记录num[i]还不是Nearest Fibonacci number的下标i,操作三时只需要更新set中在区间内的数,num[i] -> Nearest Fibonacc原创 2014-07-30 16:21:45 · 1757 阅读 · 0 评论 -
HDU 4902 Nice boat(线段树 区间更新)
题意:给你一个区间,每次可以进行两种操作1:把区间中的数全都变成x 2:把区间中大于x的数变成gcd(a[i], x)最后输出序列。(n,m时限 15s,暴力也能过。。。。线段树做法,区间更新,lazy标记,到需要更新的时候才更新。num[rt] != -1,表示 区间 L[rt]~R[rt] 所有的数都相同。#inclu原创 2014-08-05 09:43:34 · 1672 阅读 · 0 评论 -
poj3468 A Simple Problem with Integers,成段更新
http://poj.org/problem?id=3468 整段更新,整段查询/* * 整段更新,整段查询 * PushUp(int rt) 是把当前结点的信息更新到父结点 * PushDown(int rt) 是把当前结点的信息更新到儿子结点 * 延迟标记: * 简单来说就是每次更新的时候不要更新到底,用延迟标记 * 使得更新延迟到下次需要更新or询问到的时候原创 2014-02-17 13:37:47 · 1892 阅读 · 0 评论 -
POJ 3264 Balanced Lineup,RMQ
求区间的最大值,最小值的差值。RMQ问题1、Sparse-Table算法,预处理时间O(nlogn),查询时间O(1)2、线段树(略)ST算法#include #include #include using namespace std;const int maxn = 50005;int ST_min[maxn][30], ST_max[maxn][30];原创 2014-01-18 22:35:52 · 1715 阅读 · 0 评论 -
hdu4027 Can you answer these queries? (区间修改,区间查询)
对一个区间两种操作:c x y1、使区间[x,y]的数等于其开方数(四舍五入)。2、查询区间[x,y]的和。剪枝:当一个数小于等于1时其开方数将不再变化--------------------------------------------------------1、线段树#include #include #include #include #i原创 2014-02-20 11:55:35 · 1875 阅读 · 0 评论 -
hdu1754 I Hate It
用线段树维护区间最大值,支持修改单点的值。#include #include #include using namespace std;#define LL(x) (x<<1)#define RR(x) (x<<1|1)const int maxn = 200005;struct node { int l, r; int Max;}tree[maxn*4]原创 2014-01-18 17:56:52 · 1926 阅读 · 0 评论 -
hdu1394 Minimum Inversion Number
求Inversion的最小逆序数先用线段树求出初序列的逆序数,然后 每次将最后一个数,移到第一个位置逆序数的变化 减少a[i], 增加n - 1 - a[i]记录最小逆序数update:单点增减 query:区间求和#include #include using namespace std;#define LL(x) (x<<1)#define R原创 2014-01-18 17:54:08 · 1922 阅读 · 0 评论 -
hdu1556 Color the ball
Problem DescriptionN个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a 简单的区间修改,单点统计。1、离散化 ; 2、树状数组; 3、线段树1、离散化#include #include #define MAXN 100000 + 5int bit[MAXN];int m原创 2014-01-15 10:33:21 · 2039 阅读 · 0 评论 -
poj2352 Stars
简单的区间统计, 一定要注意 i可以为0的情况的存在!!(树状数组)#include #include #define N 15000 + 10int c[32000+10];int n, Max;inline int lowbit(int x) {return (x&-x);}void modify(int i,int d) {for(; i<=Max+1; i+=lowb原创 2014-01-13 14:36:49 · 1820 阅读 · 0 评论 -
poj 2985 The k-th Largest Group 求第K大数 Treap, Binary Index Tree, Segment Tree
题目链接:点击打开链接题意:有两种操作,合并集合,查询第K大集合的元素个数。(总操作次数为2*10^5)Treap模板(静态数组)#include #include #include #include #include const int maxNode = 500000 + 100;const int inf = 0x3f3f3f3f;struct Tr原创 2014-05-23 09:44:20 · 2310 阅读 · 0 评论