第六周小结

  这周主要做了线段树的练习,整理几个不错的题目。

1、 P1908 逆序对

题意:求给定的一段正整数序列的逆序对个数。(逆序对就是序列中 a i>a j的数对)

题解:树状数组+离散化,离散化处理,按价值大小排序,排完序之后采用树状数组,把每次这个数的位置加到树状数组中,那么之前加入的数会比后加入的大,然后再把当前这个数减1,查询其前面位置的数,即可得结果。

2、P2574 XOR的艺术

题意:给一个长度为n的01串,对区间(l , r)中的每一个数进行非运算(由0变为1,1变为0),并询问区间(l , r)中1的数目。

题解:线段树模板题,因为是01串,所以一个区间中1的数目就是这个区间和。用线段树维护4个值,左端点、右端点、区间和、下传标记。然后按照板建建树,对于下传标记可以设一个布尔变量来判断。

3、Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2) D Restore Permutation

题意:给n个数,每个数表示一个排列中前面小于它的数之和,还原这个排列。

题解:1是序列中最小值最右端的数,把这个值减掉,再从小到大找出序列中最小值最右端的数的位置,用线段树维护区间最小值,懒标记进行区间修改,如果右子树最小值小于等于左子树最小值,那就先从右子树查找。

  通过做了一些题,线段树稍稍熟悉了些,但也只是能写写模板题,还需要做进一步练习。下周继续做做线段树,再接再厉。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值