线段树
sunnyorrainy
这个作者很懒,什么都没留下…
展开
-
codeforces global round 5 B题权值线段树
有一些车要进洞和出洞,给出它们的进洞和出洞序列,如果有超车的情况发生,超车的那辆车要被罚款,即如果a比b先进洞,但是b却先出洞,b就要被罚款。这个题有很多的方法,但是终究都围绕着一个思想:比自己先进洞的车一定要先出洞,否则就要被罚款。我看了大佬的博客,这题用树状数组写的,思想是按照出洞的顺序,找出这辆车的前面本应该有多少辆车已经出洞了。再找实际上有多少辆车出洞了。如果实际上的更少,就要被罚...原创 2019-10-26 09:35:10 · 141 阅读 · 0 评论 -
扫描线,矩形覆盖两次及以上的面积hdu1255
给一些矩形的顶点,求它们重叠了两次及以上的部分的面积。这个题需要在扫描线求矩形面积的基础上修改一些,不是简单的求出所有矩形的面积,再减去实际的面积。因为由的部分是覆盖了三次及以上的直接减去是错误的。需要额外增加一个数组用来保存覆盖两次及以上的面积的长,维护这个数组的话只需要每次更新的时候计算一下。其他的地方和简单的扫描线求矩形面积并没有什么区别。#pragma warning(d...原创 2019-10-22 18:24:56 · 238 阅读 · 0 评论 -
线段树扫描线poj1151
线段树扫描线的模板题,线段树扫描线和线段树区间染色有着相似的地方。它们用线段树维护的都是一段区间,而不是一个结点。因为扫描线可能需要求带有小数的矩形面积,所以需要离散化。不能简单的用(L,mid)和(mid+1,R)来表示,因为mid和mid+1之间有距离,但是维护一段区间就可以了。#pragma warning(disable:4996)#include<iostream>...原创 2019-10-20 08:59:57 · 95 阅读 · 0 评论 -
带修改的主席树zoj2112
带修改的主席树板子。感觉很复杂,也很难懂#pragma warning(disable:4996)#include <cstring>#include<cstdio>#include <algorithm>#include<iostream>#include<cmath>#include<queue>#in...原创 2019-10-24 19:43:26 · 139 阅读 · 0 评论 -
线段树的应用 poj2991
题意:有一个挖掘机的手臂,它有很多节,开始的时候都是垂直于地面的,然后要对手臂的关节部分进行旋转,旋转到:从逆时针开始的角度a。每一次旋转后,都需要输出最后一节的尾部的坐标。每次旋转的时候,需要用表达式来来表达,这个表达式选择的是向量,向量的旋转还要表达出来。没有学好向量,看到这题很懵逼。向量的旋转和复数的运算有关。两个复数:z1=x1+y1*i=r1*(cosa1+sina1*i)...原创 2019-10-08 20:33:16 · 121 阅读 · 0 评论 -
权值线段树,hdu6609
题意:有n个数,还有一个数m,问对于每一个数,在它前面的数(不包括自己)中至少要删除多少个数字,才能使这个数的前缀和小于等于m思路:这个题用multiset也能做,就是数据结构处理。权值线段树也能解决,要删除最少的数,也就是要保留最多的数。使保留的数之和小于等于m。#pragma warning(disable:4996)#include<iostream>#includ...原创 2019-09-23 20:28:49 · 128 阅读 · 0 评论 -
线段树的区间修改操作poj3468
题意:给一个数组,进行区间修改和求和操作。线段树区间修改,直接放线段树咬,但是很多的细节需要注意。千万不能upate(L,mid,2*k,val);update(mid+1,R,2*k+1,val).会改变目标区间的值。比如n=10,修改区间(3,6)1,左边:目标区间变为(3,5),树的区间为(1,5) 右边:目标区间变为(6,6)树的区间变为(6,10)2, 左边...原创 2019-09-21 14:48:10 · 185 阅读 · 0 评论 -
主席树模板poj2104
题意:给一个数组,问区间(L,R)内的第k小个数字,就是把(L,R)内的元素从小到大排序,取第k个数。主席树的模板题,但是主席树确实很难想,而且也不是很好理解。代码也是抄的大佬的。。。大概的结构是当n棵权值线段树,每次加入一个数,就要建立一个独立的权值线段树,但是对于这个新建立的权值线段树的左右子树,如果和前一棵树相同就不再建立新的,而是直接沿用前一棵树的。如果没有能用的子树,就只能建立新...原创 2019-09-20 17:45:40 · 91 阅读 · 0 评论 -
线段树 求区间内两数积最小值HihoCoder - 1586
题意:给一个数组,数组元素大小为-2^17~2^17,长度最大为2的17次方,有Q(<=2^17)次操作,1:单点修改,2:求区间(l,r)内的两个数(可以是同一个数),使它们的乘积最小.这个题我看了题解才知道其实没有其他什么操作,就是求区间最大最小值。1:如果最大值小于等于0,输出最大值的平方(区间内所有的数都小于等于0,则两个数乘积一定大于等于0,找出绝对值最小的相乘,即最大值的...原创 2019-09-17 21:41:27 · 435 阅读 · 0 评论 -
线段树的平方根hdu4207
这个题很神奇的地方是平方根几次以后会变成1,然后就不用再计算了,而是直接返回,可以节省时间。这个题要用到long long,还是直接全部变量都开long long 的好,要不然可能会出错,还可能TLE。#pragma warning(disable:4996)#include<iostream>#include<cstring>#include<cst...原创 2019-09-07 19:20:03 · 158 阅读 · 0 评论 -
线段树区间染色poj2777&poj2528
线段树区间染色,这个问题和一般的线段树有区别,更新和查询操作都需要注意。还要把数组开大一点。参考(抄)了大佬的博客poj2777题意:涂颜色,有两种操作P和C,C 后a,b,c三个数,表示把a,b区间内都涂成c这种颜色P后a,b两个数,代表询问a,b区间内的颜色种类#pragma warning(disable:4996)#include<iostream>#...原创 2019-09-05 11:23:12 · 329 阅读 · 0 评论