---------线段树
文章平均质量分 90
Stayaccept
这个作者很懒,什么都没留下…
展开
-
poj2828
链接:点击打开链接题意:就是后面人插队的问题,具体如图所示代码:#include #include #include using namespace std;int node[200000*3],ans[200000];int x[200000],y[200000];void build(int pos,int l,int r,int id,int x){ in原创 2015-08-08 10:47:29 · 616 阅读 · 0 评论 -
hdu1698(线段树区间更新)
链接:点击打开链接题意:给出一个t代表几组数据,给出一个n代表1~n都为1,然后输入命令(x,y,z),(x,y)为区间,z为将区间内的数改为z原创 2015-08-08 16:17:41 · 533 阅读 · 0 评论 -
poj3468(线段树区间更新)
链接:点击打开链接题意:给N个数,有两种指令一种为询问区间内所有数的和,另一种为将区间内所有的数都加上一个指定值(线段树区间更新)代码:#include #include #include typedef __int64 ll;const __int64 SIZE=(1<<18)-1;using namespace std;__int64 N,Q;原创 2015-10-12 19:56:21 · 374 阅读 · 0 评论 -
hdu1540(线段树区间合并)
链接:点击打开链接题意:给出长度为n的数组,初始每个点都是1,每次操作可能将某个点取反,或者询问某个点所在的区间中连续1的个数最多是多少代码:#include #include #include #include #include #include #include using namespace std;const int siz=50005;int lsum[siz<原创 2017-08-25 15:15:55 · 235 阅读 · 0 评论 -
poj2528(线段树区间染色)
链接:点击打开链接题意:给出n张海报,问最后能看到几张海报,具体看图代码:#include #include #include #include #include using namespace std;const int siz=50005;int n,x[siz],y[siz],vis[siz],col[siz],tree[siz<<2];void push原创 2017-08-22 17:29:30 · 351 阅读 · 0 评论 -
hdu4027(线段树)
链接:点击打开链接题意:对于区间中每个数开平方,求给出区间的区间和代码:#include #include #include #include #include using namespace std;const int siz=100005;long long tree[siz<<2];void build(int l,int r,int rt){ if(l==r原创 2017-08-23 18:38:10 · 218 阅读 · 0 评论 -
poj3667(线段树区间合并)
链接:点击打开链接题意:给出包含n个元素初始为0的数组,有两种操作,一种返回连续是0的长度为d的最左边的下标并区间更新成1,另一种将区间更新为0代码:#include #include #include #include #include #include #include using namespace std;const int siz=50005;int lazy[原创 2017-08-27 18:22:21 · 292 阅读 · 0 评论 -
hdu3974(dfs序建线段树)
链接:点击打开链接题意:给出一个有向树,初始所有节点为-1.有两种操作,一种为(T,x,y),表示将x节点的所有子树中的节点变为y,另一种为(C,x),为求x节点的值代码:#include #include #include #include #include #include #include #include using namespace std;const int原创 2017-09-06 20:26:47 · 1265 阅读 · 0 评论 -
poj2155(线段树套线段树)
链接:点击打开链接题意:给一个N*N的矩阵,初始每个元素都为0,有两种指令,第一种给出一个子矩阵的左上角和右上角,使其中每个元素都取反,第二种询问某一个点的值代码:#include #include #include using namespace std;const int SIZE=1005;int n,X1,X2,Y1,Y2,ans;int sum[SIZ原创 2016-01-17 12:35:41 · 459 阅读 · 0 评论 -
hdu5592(线段树+二分)
链接:点击打开链接题意:给出A[1]到A[n],A[i]的意义为1~i位每一位逆序数的和,输出这个数列代码:#include #include #include #include #include #include using namespace std;int n,bit[50005];int sum(int i){ int s=0; while(i>0)原创 2015-12-07 21:00:59 · 560 阅读 · 0 评论 -
hdu3308(线段树区间合并)
链接:点击打开链接题意:给出n个数,有两种操作一种为(U x y)将x点的值改为y,另一种为(Q x y)求区间[x,y]最长连续递增序列长度代码:#include #include #include #include #include #include #include #include #include #include using namespace std;c原创 2017-09-03 18:29:42 · 409 阅读 · 0 评论 -
hdu6183(线段树动态开点)
链接:点击打开链接题意:有三种操作,分别为:0 清除矩阵中所有颜色1 x y c 在(x,y)点涂上c颜色2 x y1 y2 询问左上角为(1,y1),右上角为(x,y2)的矩阵中含有的颜色种数代码:#include #include #include #include #include #include #include #include #include原创 2017-10-14 11:23:34 · 502 阅读 · 0 评论 -
Codeforce 915E(线段树动态开点)
链接:点击打开链接题意:Alex高中毕业了,他现在是大学新生。虽然他学习编程,但他还是要上体育课,这对他来说完全是一个意外。快要期末了,但是不幸的Alex的体育学分还是零蛋!Alex可不希望被开除,他想知道到期末还有多少天的工作日,这样他就能在这些日子里修体育学分。但是在这里计算工作日可不是件容易的事情:从现在到学期结束还有 n 天(从 1 到 n 编号),他们一开始都是工作日。接下来原创 2018-01-30 21:23:11 · 1162 阅读 · 0 评论 -
hdu5249(权值线段树)
链接:点击打开链接题意:有3种形式 "in x": 代表重要值为x(0≤x≤109)的请求被推进管道。 "out": 代表服务拉取了管道头部的请求。 "query: 代表我想知道当前管道内请求重要值的中间值. 那就是说,如果当前管道内有m条请求, 我想知道,升序排序后第floor(m/2)+1th 条请求的重要值.代码:#include <map>#include <st...原创 2018-03-26 15:33:10 · 452 阅读 · 0 评论 -
hdu1754(线段树单点更新)
链接:点击打开链接题意:本题目包含多组测试,请处理到文件结束,在每个测试的第一行,有两个正整数N和M(0学生ID编号分别从1编到N第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩接下来有M行.每一行有一个字符C(只取'Q'或'U') ,和两个正整数A,B当C为'Q'的时候,表示这是一条询问操作,它询问ID从A到B(包括A,B)的学生当中,成原创 2015-08-07 18:23:39 · 815 阅读 · 0 评论 -
hdu1166(线段树单点修改)
链接:点击打开链接题意:第一行一个整数T,表示有T组数据.每组数据第一行一个正整数N(N接下来每行有一条命令,命令有4种形式:(1)Add(i,j) i和j为正整数,表示第i个营地增加j个(j不超过30)(2)Sub(i,j) i和j为正整数,表示第i个营地减少j个人(j不超过30)(3)Query(i,j),i和j为正整数,i(4)End表示结束,这条命令在每组数据最原创 2015-08-07 18:18:43 · 718 阅读 · 0 评论 -
poj1195
链接:点击打开链接题意:有四种指令,第一种初始化一个N*N的矩阵为0,第二种将坐标(X,Y)处的值添加A,第三种给出一个子矩阵的左上角和右上角,求矩阵内值的和,第四种结束所有指令,详细见下图代码:#include #include #include using namespace std;const int SIZE=1050;int n,val,X1,Y1,X2,原创 2016-01-17 12:50:27 · 480 阅读 · 0 评论 -
hdu4819
链接:点击打开链接题意:给出一个N*N的矩阵,然后给出x,y,l三个数,找出以x,y为中心边长为l的正方形矩阵中的最大值和最小值,并将最大值和最小值的平均值赋给(x,y),并输出每次(x,y)的值代码:#include #include #include #include using namespace std;const int SIZE=805;const原创 2016-01-17 13:04:40 · 701 阅读 · 0 评论 -
Codeforce 445E
链接:点击打开链接题意:给出n个数,初始为1~n,有m个操作,一种是将区间[l,r]内的值改为x,同时改点会累加一个|x-y|的值,第二种询问[l,r]区间内产生的累加值的和代码:#include #include #include #include #include using namespace std;const long long SIZE=100005原创 2016-01-21 00:40:04 · 419 阅读 · 0 评论 -
poj3368
链接:点击打开链接题意:给出一个不降序列,求出指定区间内出现频率最高的数代码:#include #include #include #include #include using namespace std;const int SIZE=100005;int a[SIZE<<1],tmp[SIZE<<1];int maxx[SIZE<<2],sum[SI原创 2016-01-22 00:29:03 · 511 阅读 · 0 评论 -
hdu2795
链接:点击打开链接题意:给一个h*w的木板,往上贴n张海报,海报的尺寸都是1*wi,贴的原则是近可能往最上一行贴,同行尽可能往最左面贴,问每一张海报都能贴到哪一行,如果贴不下了就输出‘-1’代码:#include #include #include #include using namespace std;int node[1000005],w;int update(int原创 2015-08-08 16:05:51 · 518 阅读 · 0 评论 -
hdu1394
链接:点击打开链接题意:给出一个序列,每次讲队首放在队尾,求这个过程中逆序数最小是多少代码:#include #include #include #include #include using namespace std;const int SIZE=5005;int segtree[SIZE<<2];void build(int l,int r,int原创 2016-01-05 19:33:41 · 550 阅读 · 0 评论 -
poj2886
链接:点击打开链接题意:有n个人围成一个圈,第一次是顺时针第k个人出列,当这个人出列后,下个出队的是从这个人开始数第num[i]个人,如果num[i]题意:#include#include#includeconst int SIZE=500005;int tree[SIZE<<2];using namespace std;int a[40] = {1,2,4,6原创 2016-01-23 20:34:39 · 716 阅读 · 0 评论 -
poj2104
链接:点击打开链接题意:给定一个数列a1,a2,...,an和m个三元组表示的查询。对于每个查询(i,j,k),输出ai,...,aj的升序排列中的第k个数代码1:#include #include #include #include #include #include using namespace std;const int SIZE=100005;原创 2016-01-10 14:07:41 · 846 阅读 · 0 评论 -
hdu2665
链接:点击打开链接题意:求给定区间中第k小的数代码:#include#include#include#includeusing namespace std;const int SIZE=100005;int tmp[SIZE],toleft[50][SIZE];int tree[50][SIZE];void build(int l,int r,int r原创 2016-01-10 14:11:18 · 486 阅读 · 0 评论 -
51nod1175
链接:点击打开链接题意:一个长度为N的整数序列,编号0 - N - 1。进行Q次查询,查询编号i至j的所有数中,第K大的数是多少。例如: 1 7 6 3 1。i = 1, j = 3,k = 2,对应的数为7 6 3,第2大的数为6。代码:#include#include#include#includeusing namespace std;const int SI原创 2016-01-10 14:14:31 · 514 阅读 · 0 评论 -
poj3667
链接:点击打开链接题意:有N个连续的空房间,分别编号1~N,M条指令,指令分为两种,分别为1 D和2 X D,第一种指令输出是否有D个连续的空房间,如果有则输出最靠左的第一个房间编号,否则则输出0,第二种则将从X开始D个房间清空代码:#include #include #include #include using namespace std;const int S原创 2016-01-11 14:00:37 · 478 阅读 · 0 评论 -
hdu1542(矩形面积并)
链接:点击打开链接题意 :给出n个矩形的左下角和右上角的坐标,求矩形面积的并代码:#include #include #include #include using namespace std;const int SIZE=505;int add[SIZE<<2]; //add为区间标记,与懒惰标记类似原创 2016-01-12 12:59:36 · 3195 阅读 · 2 评论 -
hdu1828&&51nod1206(矩形周长并)
链接:点击打开链接题意:给出n个矩形的左下角和右上角,求n个矩形周长并代码:#include #include #include #include #include using namespace std;const int SIZE=100005;struct node{ int l,r,h,ss; node(){} node原创 2016-01-16 12:29:24 · 683 阅读 · 0 评论 -
poj3264(ST)
链接:点击打开链接题意:输出序列中区间最大值和最小值的差代码:#include #include #include #include #include #include #include #include using namespace std;const int SIZE=200005;const int INF=0x3f3f3f3f;in原创 2016-01-20 16:38:53 · 347 阅读 · 0 评论 -
hdu2665(主席树)
链接:点击打开链接题意:求区间第k大代码:#include <map>#include <set>#include <queue>#include <string>#include <math.h>#include <vector>#include <stdio.h>#include &原创 2018-10-28 21:08:36 · 239 阅读 · 0 评论