![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
文章平均质量分 79
谢符宝
业精于勤,荒于嬉行成于思,毁于随。
展开
-
poj1151
题意: 求矩形的并面积。思路:线段树+离散化+扫描线。代码:#include #include #include #include #include using namespace std;struct node{ int l,r; node *left,*right; double len; int cove原创 2014-01-16 16:30:48 · 670 阅读 · 0 评论 -
poj1201(二分+线段树)或(差分约束系统)
题意:数轴上每个位置为0或是1,给n(1 个区间[ai, bi],每个区间内至少有 ci 个1.0 1 。问数轴上至少有多少个1可以满足要求。解法1:现将区间按右端点排序,然后每个区间内的点尽量往右边放,这样子可以照顾到以后的。在找每个区间的放法时,线段树查询区间1的个数,二分查找要放的后缀位置,然后将整个区间后缀全部涂上1.总复杂度是nlognlogn。网上没找到有人这么做的,但原创 2014-11-16 15:46:28 · 1056 阅读 · 2 评论 -
hdu4747 mex 线段树
题意:给一个序列不超过200000个元素,定义mex(i,j)是区间[i,j]之间所没有的最小非负整数。求sum(mex[i,j])对于所有1解法:线段树。先求出mex(1,1),mex(1,2),mex(1,3)...mex(1,n) 而且这必然是递增的。 然后 sum[i=1,1sum[i=2,2sum(mex[1代码:/************************原创 2014-11-14 15:36:08 · 995 阅读 · 0 评论 -
poj3145(线段树)
题意:两种操作,一种B向集合中插入元素t原创 2014-06-18 12:33:14 · 1078 阅读 · 0 评论 -
CF(438D) The Child and Sequence(线段树)
题意:对数列有三种操作:Print operation l, r. Picks should write down the value of .Modulo operation l, r, x. Picks should perform assignment a[i] = a[i] mod x for each i (l ≤ i ≤ r).Set operation k原创 2014-06-02 00:51:14 · 2271 阅读 · 0 评论 -
hdu1754(线段数维护区间最大值)
题意:给定1-n个数,然后中间动态询问区间原创 2014-05-23 23:12:49 · 695 阅读 · 0 评论 -
poj3171(线段树区间覆盖最小代价)
题意:给n个区间及其代价值,问要覆盖[M,E]区间至少要花费多少代价;解法:线段树维护和查询区间的最小值: 先将所有区间的代价设置为无限大,然后[0,M-1]区间设置为0.将给的n区间按左优先排序,然后进行一趟遍历:第i个区间为[a,b],先查询[a-1,b]区间的最小值min然后更新[a,b]的最小值为Ci+min。最后找到[E,E]区间的最小值就是要覆盖[M原创 2014-04-08 13:09:29 · 2027 阅读 · 0 评论 -
poj2482(最多矩形覆盖-线段树)
题意:二维平面上有一些星星,每个星星都有一个亮度值,给一个矩形,矩形两边平行于坐标轴,只能平移不可以旋转,问矩形覆盖面积内的星星的亮度值之和最大是多少?解法:将模型转化为:每个星星都是一个相等大小的矩形的中央。每个星星都是一个矩形,这时候求一个点,使得所有覆盖此点的矩形的亮度值之和最大。 解此模型可以用线段树,先将区间离散化,然后从左向右扫,及时维护和查询。 ps:做题过原创 2014-04-22 15:18:31 · 1815 阅读 · 0 评论 -
poj2777
题意:n个位置,初始化全部为1号颜色。每次更新一段连续区间的颜色。然后查询输入区间的颜色数量。颜色数量种类在30之内。解法:线段树。每次更新的时候区间能够恰好全部覆盖就停止向下递归(这是最关键的线段树所优化的地方)。然后用状压的办法表示颜色数量(这在类似问题数量n不是很多的情况下使用很方便)。代码:#include #include #include using n原创 2014-01-16 01:04:08 · 707 阅读 · 0 评论 -
uva1608(Non-boring sequences)
题意:如果一个序列的任意连续子序列中至少有一个只出现一次的元素,则称这个序列是不无聊的。判断一个长度为n(n<=200000)的序列是不是无聊的。解法:搞个map记录每个数前一个数的位置,判断以每个数结尾的所有区间是否合法,其中用到线段树访问区间最小值。代码:/*******************************************************原创 2014-11-28 00:32:24 · 1277 阅读 · 0 评论