您当前的位置: 首页 > 

HeartFireY

暂无认证

  • 5浏览

    0关注

    334博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

3.数列分块入门 3

HeartFireY 发布时间:2021-09-22 23:03:08 ,浏览量:5

😊 | Powered By HeartFireY | 分块例题

#6279. 数列分块入门 3 - 题目 - LibreOJ (loj.ac)

与上一题极为相似。(数列分块入门 2)

对于区间加操作:采取与上题相同的方式,非完整块暴力取出修改放回,完整块直接打标记

对于查询操作:

  • 对于头尾块,直接遍历查询小于待查值的最大值,查询过程不断取 m a x max max;
  • 对于完整块,二分一个大于等于待查值的最小位置,然后 − 1 -1 −1可得答案位置。这里的二分可以直接采用 S T L STL STL的 l o w e r _ b o u n d lower\_bound lower_bound。
#include 
using namespace std;

const int N = 5e5 + 10;
int id[N], blo, n;
int a[N], tag[N];

vector block[N];

void update(int loc){
    block[loc].clear();
    for(int i = (loc - 1) * blo + 1; i > v;
        if(op == 0) add(l, r, v);
        else if(op == 1) cout             
关注
打赏
1662600635
查看更多评论
0.0362s