随笔分类 - CQUPT 2018 寒假训练 DIV2 (7)线段树与bit1
stay hungry stay foolish
摘要:- 题目大意 给出一串数字,求是它为顺序排列的最小的交换次数。(求逆序数) - 解题思路 利用树状数组来解决,每输入一个数,就跟前面的数比较有没有比它大的,有就记录,然后添加该点。 - 代码
阅读全文
摘要:- 题目大意 从左到右,从下到上,然后分别给出星星,而星星的level就是在它下面和左边的星星个数,然后要你求出0-n-1的level的星星有几个。 - 解题思路 利用树状数组来做,给出的点按y排好序,相同的y按x的递增顺序给出。y不用考虑,只要考虑x就可以了。 - 代码
阅读全文
摘要:- 题目大意 有两种操作,C是每次操作可以是编辑某个矩形区域,这个区域的0改为1,1改为0,Q是每次查询只查询某一个点的值是0还是1。 - 解题思路 可以利用树状数组来做,一维和二维都可以,我用的是二维,主要二维写起来方便。关于如何查询点的信息,画个图就可以很好理解了(查询单点类似于求和,就跟气球涂
阅读全文
摘要:- 题目大意 有两种命令,Q是查询一个区间的和,C是一个区间同时增加一个数。 - 解题思路 主要是线段树的点的更新和存储问题。每个一个数都更新到叶子节点不是明智的做法,很消耗时间。故每个节点加一个特殊量来记录增量的累加。 - 代码
阅读全文
摘要:- 题目大意 D代表破坏村庄,R代表修复最后被破坏的那个村庄,Q代表询问包括x在内的最大连续区间是多少,然后根据命令来进行模拟操作。 - 解题思路 这个我是根据线段树的区间合并的模板来写的,用三个变量记录左边连续区间,右边连续区间和最大连续区间,用栈来存储点(修复的时候要用),其余的就是更新点,然后
阅读全文
摘要:- 题目大意 给你N个气球,不断刷新指定区间的颜色,刷新N次,最后输出每一个气球的刷新次数。 - 解题思路 利用线段树来做,线段树的每一个节点都代表了一个区间,然后利用一个特殊值来存储这个区间的信息,然后刷新点的信息来找这个区间,找到后+1即可。 - 代码
阅读全文
摘要:- 题目大意 中文题,一共有4种命令,然后来根据命令来进行操作。 - 解题思路 典型的线段树的问题,进行点的更新,然后进行区间的查询(查询的时候查的是这个区间上的点的和)。 - 代码
阅读全文