线段树
‘’云腾致雨‘’
这个作者很懒,什么都没留下…
展开
-
POJ-2299(线段树或树状数组或归并排序)
题目链接: Ultra-QuickSort 思路 刚刚学线性代数学到的逆序数,用多重循环果然超时,刚开始的时候完全没有线段树的思路,后来看了别人的思路,发现真的妙啊,开心的飞起来,虽然我后面又因为把小括号写成中括号的问题WA了一晚上。比如说9 1 0 5 4这个序列,我们记录一下他们的序号位置,然后再排个序: 0 1 4 5 9 在原序列中的位置 3 2 5 4 1 开始我...原创 2019-02-28 09:53:45 · 1595 阅读 · 1 评论 -
POJ-2155(二维线段树)
题目链接: Matrix 题意 给你一个N*N矩阵,初始都为0,有两种操作,是C操作的话就是把左上角坐标为(X1,Y1),右下角坐标为(X2,Y2)的矩阵的元素变一下,原来是1就变成0,是0就变成1;是Q 操作的话就是 询问坐标为(X1,Y1)的元素是多少。 思路 相比较一维,二维变成了树套树,我们的思路是每次更新,先找一维坐标的相应区间,找到后再到二维区间中找对应的,找到区间后,把此区间的tr...原创 2019-02-28 18:22:55 · 277 阅读 · 0 评论 -
HDU-5124,POJ-2528(线段树+离散化)
题目链接: lines 题意 求相交区间的最大的相交次数。 思路 先离散化处理,再用线段树求每段区间的相交次数,这个线段树的每个节点代表这段区间的总相交次数,最后再比较每个小区间的相交次数,找最大值。 #include <bits/stdc++.h> using namespace std; const int maxn=100001; int addmark[maxn<<...原创 2019-02-25 19:11:21 · 169 阅读 · 0 评论 -
HDU-1556(线段树或树状数组)
题目链接: Color the ball 思路 已经写过一次类似前缀和的题解了,这次再写一遍线段树或树状数组的解法。这题是区间更新和单点查询,线段树的单点查询不过是区间查询的特殊形式,代码是一样的。但是树状数组的区间更新和单点查询却不同于区间更新和区间查询。不过此处就不详细说了,树状数组本身就是个神奇的东西。 1.线段树 #include <iostream> #include &l...原创 2019-03-02 21:29:17 · 172 阅读 · 0 评论 -
UVA-11992(线段树)
题意 对矩阵有三种操作,第一是让矩阵的每个元素加上某个数,第二是让矩阵得每个元素变成某个数,第三是输出某个子矩阵的数字总和,最大值和最小值。开始时,矩阵得每个元素为0. 思路 因为最多只有20行,所以可以每行都建立一个线段树,问题是注意set操作和add操作之间的联系,set是优先于add的。我在pushdown函数中就因为没注意这个问题,WA到怀疑人生。 #include<bits/std...原创 2019-03-25 19:32:14 · 172 阅读 · 0 评论 -
Codeforces 846 D(线段树)
题目链接: D. Monitor 题意 求K*K格子的最大值。初始值都为inf. 思路 简单的线段树求区间最大值。 #include <bits/stdc++.h> using namespace std; int tree[3200][3200]; const int inf = 0x3f3f3f3f; void update_y(int xnode,int ynode,int xb...原创 2019-04-01 22:04:01 · 188 阅读 · 0 评论