![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
丶沙鸥
这个作者很懒,什么都没留下…
展开
-
“红旗杯”第十五届东北地区大学生程序设计竞赛 D - Lowbit
原题链接 题意: n个数,m次操作。 操作1:给l,r之间的数加上一个自身的lowbit(二进制下的最低位)。 操作2:查询l,r区间和。 思路: 可以发现进行操作1只有两种情况。 1.如果这个数是2的倍数,那么进行操作1只需要*2就可以了。 2.如果这个数不是2的倍数,那么就是最低位往左移一位。 根据题目中a[i]的范围可以知道一个数最多只能进行15次第二种情况的操作,就是10101010101010101这样的形式的时候。 所以可以对不是2的倍数的值进行暴力单点修改,当一个区间内的值都是2的倍数的时候再原创 2021-09-04 18:40:00 · 553 阅读 · 0 评论 -
hdu6992 Lawn of the Dead 查询区间会变的线段树小变形
原题链接 题意: n*m的棋盘,k个地雷,从(1,1)开始走,只能走右下两个方向,显然地雷不能走,问能到达的格子数 思路: 两棵线段树维护一下上一次层能到的区间,然后根据这一层的地雷位置推出理论上能到的区间,再更新这一层实际能到的区间。 #include<bits/stdc++.h> #define LL long long #define INF INT64_MAX #define MOD 1000000007 #define stree SegTree[f][root] #define ls原创 2021-08-27 16:56:13 · 116 阅读 · 0 评论