第八周总结

       在之前学习线段树的时候,感觉看题解和代码有些难理解,所以看的也比较少,大部分学习理论知识和看视频,做的相关题目也很少,所以这一周就练习了一下算法标签为线段树的题,做这些题目前对我来说费人费脑也很耗时间,思路有了之后,敲代码还需要敲一段时间,虽说有模板,但是在不看模板的情况下,效率会降低,代码思路来的也会慢一些。

1、I Hate It 

      n个学生,告知你每位学生的成绩,m次查询,每一行有一个字符 C (取'Q'或'U') ,和两个正整数A,B。当C为'Q'的时候,询问操作,它询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少。当C为'U'的时候,更新操作,如果当前A学生的成绩低于B,则把ID为A的学生的成绩更改为B,否则不改动。这一道题可以用线段树来实现,求区间最大值,区间查询+单点修改。

2、XOR的艺术

        给定一个长度为n的01序列,进行多次操作:对[ l , r ]区间进行异或操作(即 0 ← 1 , 1 ← 0 )或询问 [ l , r ]区间中1的个数(即序列求和),用 lazy标记记录每个区间的反转次数。如果标记次数是偶数,那么区间和不变(因为偶数次反转,又回到了原始序列);标记次数是奇数的话,那么sum = length - sum (len 是区间的长度),因为奇数次反转,那么反转后1的个数就是初始0的个数。

3、在你窗外闪耀的星星

        这个题目的名字吸引了我,冲着线段树去的,看了一些题解,前缀和就可以解决,求某个数组的某个固定范围内和的最大值,但要注意,某个位置可能会有多个星星叠加,所以亮度也是要累计的,这里的长度1应该是指1这个位置所占的长度,比如窗的宽度是3,包含1,2,3三个数字,而不是算它们的间隔。用线段树,则为单点修改+区间求和,但是还是要要注意星星会重合叠加。

       下一周呢,跟着老师新布置的任务要求,继续加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值