您当前的位置: 首页 > 

HeartFireY

暂无认证

  • 2浏览

    0关注

    334博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

8.数列分块入门 8

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

😊 | Powered By HeartFireY | 分块例题

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

给出一个长为 n n n的数列,以及 n n n个操作,操作涉及区间询问等于一个数 c c c的元素,并将这个区间的所有元素改为 c c c。

思路很简单,仍然采取分块标记的方式进行记录。

对于区间修改和查询:

  • 对于不完整的块,我们先将历史标记下放,执行一次区间修改,然后再暴力查询+修改;
  • 对于完整块,如果当前块历史无标记,则暴力遍历统计,然后进行区间修改;如果以已经存在历史标记,则累加块长度至答案中。
#include 
using namespace std;

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

inline void push_down(int pos){
    if(tag[id[pos]] == -1) return;
    for(int i = (id[pos] - 1) * blo + 1; i  r >> c;
        cout             
关注
打赏
1662600635
查看更多评论
0.0857s