题目链接:https://loj.ac/problem/6284

题目大意:中文题目

具体思路:还是和sqrt那个题的思路相同的,标记每一块的值是不是相同的,注意lazy下标的下放

AC代码:

 #include<bits/stdc++.h>
using namespace std;
# define ll long long
const int maxn = 2e6+;
const int inf = 0x3f3f3f3f;
const int mod = 1e4+;
ll l[maxn],r[maxn],belong[maxn];
ll flag[maxn],a[maxn];
int n;
void buildblock()
{
ll tmp=(ll)sqrt(n);
ll tot=n/tmp;
if(n%tmp)
tot++;
for(ll i=; i<=n; i++)
{
belong[i]=(i-)/tmp+1ll;
}
for(ll i=; i<=tot; i++)
{
l[i]=(i-)*tmp+1ll;
r[i]=i*tmp;
}
r[tot]=n;
}
void down(int pos)
{
if(flag[pos]==-)
return ;
for(int i=l[pos]; i<=r[pos]; i++)
{
a[i]=flag[pos];
}
flag[pos]=-;
}
ll ask(ll st,ll ed,ll val)
{
int ans=;
down(belong[st]);
if(belong[st]==belong[ed])
{
for(int i=st; i<=ed; i++)
{
ans+=(a[i]==val?:);
a[i]=val;
}
return ans;
}
down(belong[st]);
for(int i=st; i<=r[belong[st]]; i++)
{
ans+=(a[i]==val?:);
a[i]=val;
}
down(belong[ed]);
for(int i=l[belong[ed]]; i<=ed; i++)
{
ans+=(a[i]==val?:);
a[i]=val;
}
for(int i=belong[st]+; i<belong[ed]; i++)
{
if(flag[i]==-){
for(int j=l[i]; j<=r[i]; j++)
ans+=(a[j]==val?:);
}
else if(flag[i]==val){
ans+=(r[i]-l[i]+);
}
flag[i]=val;
}
return ans;
}
int main()
{
for(int i=; i<=maxn; i++)
flag[i]=-;
scanf("%d",&n);
for(int i=; i<=n; i++)
scanf("%lld",&a[i]);
buildblock();
ll st,ed,val;
while(n--)
{
scanf("%lld %lld %lld",&st,&ed,&val);
printf("%lld\n",ask(st,ed,val));
}
return ;
}

#6284. 数列分块入门 8(区间询问等于一个数 cc 的元素,并将这个区间的所有元素改为 c)的更多相关文章

  1. LOJ #6284. 数列分块入门 8-分块(区间查询等于一个数c的元素,并将这个区间的所有元素改为c)

    #6284. 数列分块入门 8 内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计测试数据讨论 2   题目描述 给出 ...

  2. LOJ.6284.数列分块入门8(分块)

    题目链接 \(Description\) 给出一个长为n的数列,以及n个操作,操作涉及区间询问等于一个数c的元素,并将这个区间的所有元素改为c. \(Solution\) 模拟一些数据可以发现,询问后 ...

  3. #6278. 数列分块入门 2(询问区间内小于某个值 xx 的元素个数)

    题目链接:https://loj.ac/problem/6278 题目大意:中文题目 具体思路:数列分块模板题,对于更新的时候,我们通过一个辅助数组来进行,对于原始的数组,我们只是用来加减,然后这个辅 ...

  4. #6279. 数列分块入门 3(询问区间内小于某个值 xx 的前驱(比其小的最大元素))

    题目链接:https://loj.ac/problem/6279 题目大意:中文题目 具体思路:按照上一个题的模板改就行了,但是注意在整块查找的时候的下标问题. AC代码: #include<b ...

  5. LOJ#6284. 数列分块入门 8

    分块的时候开一个数组标记这个区间是不是都是一样颜色的部分,如果是的话,我后面的查询,更新部分就可以直接整块操作,对于不是不全部都一样颜色的块在具体进到快里面去暴力. 在更新的时候对边上的两个不完整的块 ...

  6. 数列分块入门九题(三):LOJ6283~6285

    Preface 最后一题我一直觉得用莫队是最好的. 数列分块入门 7--区间乘法,区间加法,单点询问 还是很简单的吧,比起数列分块入门 7就多了个区间乘. 类似于线段树,由于乘法的优先级高于加法,因此 ...

  7. 数列分块入门1~9 loj6277~6285

    hzwer的讲解 一 给出一个长为 \(n\) 的数列,以及 \(n\) 个操作,操作涉及区间加法,单点查值. #include <iostream> #include <cstdi ...

  8. LOJ #6285. 数列分块入门 9-分块(查询区间的最小众数)

    #6285. 数列分块入门 9 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计测试数据讨论 2   题目描述 给 ...

  9. LOJ #6283. 数列分块入门 7-分块(区间乘法、区间加法、单点查询)

    #6283. 数列分块入门 7 内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计测试数据讨论 2   题目描述 给出 ...

随机推荐

  1. rewind()函数

    函数名: rewind功 能: 将文件指针重新指向一个流的开头用 法: int rewind(FILE *stream);程序例: #include <stdio.h>#include & ...

  2. 关于用户输入恶意js

    有些黑客经常闲得蛋疼的那别人的网站测试,利用一些输入的漏洞提交js代码,搞恶作剧. 对于freemarker视图的web应用,可以参考以下方法: http://yshjava.iteye.com/bl ...

  3. Tennis Game CodeForces - 496D(唯一分解定理,费马大定理)

    Tennis Game CodeForces - 496D 通过排列组合解决问题. 首先两组不同素数的乘积,是互不相同的.这应该算是唯一分解定理的逆运用了. 然后是,输入中的素数,任意组合,就是n的因 ...

  4. node(基础三)_模块系统基础

      一.前言                                                                                         这篇文章主 ...

  5. Win7无法安装程序提示Installer integrity check has failed的解决方法

    最近小明在Win7系统中下载了一款软件,但是在下载的时候弹出了NSIS Error:Installer integrity check has failed.Common causer include ...

  6. loadrunner / socket level data and wininet level data

    s loadrunner录制脚本时,此网站证书无效/无法录制到脚本问题解决 http://www.51testing.com/html/64/497364-3569552.html lr录制后空白_l ...

  7. ESXI6时间源快速同步

    1.使用SSH会话连接到ESXi主机. 2./etc/ntp.conf 在文本编辑器中打开 添加内天tos maxdist 303.运行此命令以访问 likewise shell /usr/lib/v ...

  8. 网络编程基础【day10】:多线程效果演示(二)

    本节内容 1.引子 2.并发多线程效果演示 一.引子 我们说单核的cpu只能同时执行一个任务,但是给我们的一个幻觉是可以执行多个,因为cpu太快了.它是怎么实现的呢?就是上下文切换,它不是轮询着切换的 ...

  9. 网络编程基础【day09】:堡垒机前戏(十一)

    本节内容 1.堡垒机前戏 2.SSHClient 3.SFTPClient 一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 ...

  10. springboot下整合redis使用redisTemplate模板

    pom <!-- 引入 redis 依赖 --> <dependency> <groupId>org.springframework.boot</groupI ...