
线段树
Y390d
这个作者很懒,什么都没留下…
展开
-
ACM-ICPC 2018 徐州赛区网络预赛 H (树状数组)
题目链接:https://nanti.jisuanke.com/t/31460思路:这题最棘手的就是求和元素的系数是递减的;假设有 1 2 3 4 5 ,要求 2到4的结果那么有 1 2 3 4 5 我们要求的就是 2 3 4 ,会发现我们要求的结果就是左边的区间和,然后再减去 2+3+4 ;1 2 3 4 ...原创 2018-09-14 19:19:15 · 173 阅读 · 0 评论 -
POJ - 2019 Cornfields 【二维线段树】
题目链接:https://vjudge.net/problem/POJ-2019我写的这个二维线段树没什么技巧,就是直接开一个 node[cur][cure],cur代表的是x轴的一维线段树,cure代表的是y轴的一维线段树。初始化:先从x轴开始做线段树的操作,当x轴到达叶节点时,再对y轴做线段树的操作,x轴返回到父节点时,一样要对y轴从1到N重头做一次线段树的操作,这是初始化的过程,...原创 2019-02-27 20:53:46 · 188 阅读 · 0 评论 -
HDU 1828 Picture 【线段树+离散化+扫描线】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1828题意要注意的是,周长不仅仅包括外周长,还包括内周长。用扫描线从左向右扫一次,计算图形竖直部分的周长,用扫描线从下向上扫一次,计算图像横线部分的周长。我们每次扫到一条边的时候,只取没和之前重叠的部分。类似这种求区间覆盖的问题,可以用线段树来解决,除此之外,我们还需要考虑把覆盖的区间还原回...原创 2019-01-23 14:58:10 · 200 阅读 · 0 评论 -
HDU 3642 Get The Treasury 【线段树+扫描线(相交体积)】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3642题目要求的是覆盖超过2次的总体积。线段相交的长度,面相交的面积,物体相交的体积,这三种类型题使用的线段树方法都是差不多的。唯一不同的就是扫描线的扫描方式,这里求相交体积最重要的部分就是怎么扫才比较合适。网上大部分都是以Z轴,也就是从下到上的顺序扫描的,只要离散化过后,从下到上,从左到右...原创 2019-01-27 15:05:24 · 126 阅读 · 0 评论 -
HDU - 4578 Transformation 【线段树】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4578题目比较麻烦,取模要细心一点。区间加,乘,覆盖问题不是很大,比较麻烦的就是求的和的部分,因为p只取1,2,3,所以还是有可操作性的。假设只有3个数a, b ,c。如果对这三个数做加的操作,那么 p = 2,有 (a+1)^2 + (b+1)^2 + (c+1)^2 。把这个式子的平...原创 2019-01-15 19:21:57 · 112 阅读 · 0 评论 -
HDU - 1255 覆盖的面积 【线段树求相交面积】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255这题的方法在之前的博客有比较详细的描述,这里把需要注意的重点说一下就行了。https://blog.youkuaiyun.com/godleaf/article/details/86608855如果题目只是问覆盖至少一次的话,代码基本上不用变,只需要把ans累加的公式改一下就行了,就是两个相邻的垂...原创 2019-01-24 15:27:04 · 227 阅读 · 0 评论 -
HDU 3974 【线段树?】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3974虽然是抱着线段树的思想去写的代码,但是代码整体看起来并不像线段树。题目很明确的告诉你,整体的结构是一个树,但是如果不自己多加点条件,很难能在这个树上以O(log)的时间去查找你想要找的数据。这里有一个存储树的方法,一个数组记录节点的父节点,一个数组记录节点的子节点中最左边的节点(长子)...原创 2019-01-13 23:54:43 · 225 阅读 · 0 评论 -
HDU - 4553 约会安排 【线段树区间合并】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4553需要3个标记,分别是左区间连续长度,右区间连续长度,中间区间的最大连续长度(最大可以通过更新回溯的过程中,pushup中更新)。题目的难点是如何找合适的连续区间。因为题目要求的是最左边的符合题目要求的区间,所以找区间的时候要先看左区间的连续长度,其次是中间区间的连续长度(因为中间可能会...原创 2019-01-18 18:51:20 · 189 阅读 · 0 评论 -
HDU - 1540 【线段树左右区间合并】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1540题目大概的意思就是求当前这个村庄,左右连续的村庄共有几个,包括自己。思路:比较容易想到的就是把用线段树划分的每一个区间的左右连续区间长度记录下来,然后尝试着吧X这个村庄的左右连续并且没被摧毁的村庄个数连起来,就能得出答案了。具体看代码的注释#include <iostr...原创 2019-01-13 16:19:41 · 156 阅读 · 0 评论 -
HDU 4027 【线段树区间开根号】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4027这道线段树的题目我并没有按照线段树的模板写,这里把要点讲出来就行了。第一:区间开根号不像区间乘或者除,能通过区间和然后一次性乘除求出一个区间的乘除,所以区间开根号只能一个一个的开,但是如果一个一个的开不会超时吗? 假设一个数在long long的范围里面,也就是2^63这个范围内,那么对这...原创 2019-01-12 20:38:34 · 1530 阅读 · 0 评论 -
POJ 2528 Mayor's posters 【离散化+线段树区间覆盖】
题目链接:http://poj.org/problem?id=2528思路:这里着重讲讲离散化的方式。离散化的方式是根据题目意思来选择的,不同的题目会有不同的离散化方式。这里题目要求的是在n次区间覆盖过后,求没被覆盖的海报有多少个; 题目给出可能的区间多达 1e7 ,如果用线段树的区间覆盖就需要开 4倍的空间,因为题目给出的空间有限,直接就用线段树显然是不行的。我们先从结果开始考虑...原创 2018-11-23 13:53:26 · 320 阅读 · 0 评论 -
HDU - 2888 Check Corners 【RMQ(二维线段树 / ST)】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2888第一种方法是二维线段树,注意的地方在代码注释的部分。第二种方法是 ST算法,在后面。#include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>#i...原创 2019-03-08 21:10:04 · 158 阅读 · 0 评论