博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LOJ6284 数列分块入门8(分块)
阅读量:6860 次
发布时间:2019-06-26

本文共 2002 字,大约阅读时间需要 6 分钟。

两个锅

一个是sametag[i]==c
另一个是a[j]不要写成a[i]

#include 
#include
#include
#include
using namespace std;int belong[100100],sametag[100100],n,a[100100],sz,blocknum;void calbe(int n){ for(int i=1;i<=n;i++) belong[i]=(i-1)/sz+1;}void check(int x){ int f=true,num=a[sz*(x-1)+1]; for(int i=sz*(x-1)+1;i<=min(sz*x,n);i++) f&=(num==a[i]); if(f) sametag[x]=num; else sametag[x]=-1;}void pushdown(int x){ if(sametag[x]!=-1){ for(int i=sz*(x-1)+1;i<=min(sz*x,n);i++) a[i]=sametag[x]; }}int query(int l,int r,int c){ int ans=0; int lsx=belong[l]; int rex=belong[r]; pushdown(lsx); for(int i=l;i<=min(lsx*sz,r);i++) ans+=(a[i]==c); if(lsx!=rex){ pushdown(rex); for(int i=(rex-1)*sz+1;i<=r;i++) ans+=(a[i]==c); for(int i=lsx+1;i<=rex-1;i++) if(sametag[i]!=-1&&sametag[i]==c) ans+=sz; else if(sametag[i]==-1) for(int j=(i-1)*sz+1;j<=i*sz;j++) ans+=(a[j]==c); } return ans;}void update(int l,int r,int c){ int lsx=belong[l]; int rex=belong[r]; pushdown(lsx); sametag[lsx]=-1; for(int i=l;i<=min(lsx*sz,r);i++) a[i]=c; check(lsx); if(lsx!=rex){ pushdown(rex); sametag[rex]=-1; for(int i=(rex-1)*sz+1;i<=r;i++) a[i]=c; check(rex); for(int i=lsx+1;i<=rex-1;i++) sametag[i]=c; }}int main(){ // freopen("a1.in","r",stdin); // freopen("test.out","w",stdout); scanf("%lld",&n); for(int i=1;i<=n;i++) scanf("%lld",&a[i]); sz=sqrt(n); blocknum=n/sz; if(n%sz) blocknum++; calbe(n); for(int i=1;i<=blocknum;i++) check(i); for(int i=1;i<=n;i++){ int l,r,c; scanf("%d %d %d",&l,&r,&c); printf("%d\n",query(l,r,c)); update(l,r,c); } return 0;}

转载于:https://www.cnblogs.com/dreagonm/p/10046181.html

你可能感兴趣的文章
Java+FlashWavRecorder实现网页录音并上传
查看>>
月球美容计划之最小生成树(MST)
查看>>
块状元素与内联元素的差别
查看>>
【SSH 基础】SSH框架--struts深入具体解释(一)
查看>>
Redis源代码分析(十三)--- redis-benchmark性能測试
查看>>
JVM 运行时的内存分配
查看>>
Shuttle ESB(一)——入门实例
查看>>
在SAE安装原版WORDPRESS(图文讲解)
查看>>
分布式与集群的区别是什么
查看>>
AS-->创建项目(慢)和打开项目(慢)等需要注意的问题
查看>>
2014年java软件project师面试题收集
查看>>
Java并发编程:Callable、Future和FutureTask
查看>>
这些老外的开源技术养活了很多国产软件
查看>>
svn简单介绍
查看>>
hbase region still in transition
查看>>
CSS Flex布局属性整理
查看>>
【struts2】中method={1}具体解释
查看>>
Android Studio 函数使用方法提示 快捷键
查看>>
构建自己的PHP框架--构建模版引擎(2)
查看>>
vue28-2.0-过滤器
查看>>