博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【分块】bzoj2120 数颜色
阅读量:6822 次
发布时间:2019-06-26

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

分块,在每个点记录一下它之前离它最近的相同颜色的位置pre[i],显然问题转化成了求[l,r]中pre[i]<l的值的个数。

这是分块擅长的,在每个块内记录有序表,查询时对零散的暴力,整块的二分即可。

修改时有点麻烦,设修改a[p]。

可能会对pre[p]产生影响;

可能会对p位置之后的第一个 与a[p]修改前相等的值 的pre 产生影响;

可能会对p位置之后的第一个 与a[p]修改后相等的值 的pre 产生影响。

细节蛮多,调了很久。<---蒟蒻。

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 int n,m,sz,sum,l[30],r[30],num[10001],pre[10001],preb[10001],a[10001],x,y,pos[1000001]; 7 int Res,Num;char C,CH[12]; 8 inline int G() 9 {10 Res=0;C='*'; 11 while(C<'0'||C>'9')C=getchar();12 while(C>='0'&&C<='9'){Res=Res*10+(C-'0');C=getchar();}13 return Res;14 }15 inline void P(int x)16 {17 Num=0;if(!x){putchar('0');puts("");return;}18 while(x>0)CH[++Num]=x%10,x/=10;19 while(Num)putchar(CH[Num--]+48);20 puts("");21 }22 void makeblock()23 {24 sz=sqrt((double)n*log2(n)); if(!sz) sz=1;25 for(sum=1;sum*sz
=num[y]) {
for(int i=x;i<=y;i++) if(preb[i]
=0;i--)64 if(a[i]==y)65 {*lower_bound(pre+l[num[x]],pre+r[num[x]],preb[x])=i; preb[x]=i;66 sort(pre+l[num[x]],pre+r[num[x]]+1); break;}67 int t2=a[x]; a[x]=y;68 for(int i=x;i>=1;i--)69 if(a[i]==t2)70 {t=i; break;}71 for(int i=x+1;i<=n;i++)72 if(a[i]==t2)73 {*lower_bound(pre+l[num[i]],pre+r[num[i]],preb[i])=t; preb[i]=t;74 sort(pre+l[num[i]],pre+r[num[i]]+1); break;}75 }char op[1];76 int main()77 {78 n=G();m=G();79 for(int i=1;i<=n;i++) a[i]=G();80 makeblock(); makepre();81 for(int i=1;i<=m;i++)82 {83 scanf("%s",op);x=G();y=G();84 if(op[0]=='Q') query();85 else update();86 }87 return 0;88 }

 

转载于:https://www.cnblogs.com/autsky-jadek/p/4020296.html

你可能感兴趣的文章
SpringMVC权限管理
查看>>
ET120以太网环回器介绍
查看>>
ActiveMQ快速入门
查看>>
java自学篇之程序设计基础
查看>>
swiper的基础使用(五)
查看>>
Windows Server 2012R2 Hyper-v之虚拟机复制(2)
查看>>
大数据各种实用网站
查看>>
Linux系统启动过程
查看>>
使用Dnsmasq 部署GPXE 安装 Centos7
查看>>
我的友情链接
查看>>
Windows 2012 Hyper-V Step by Step (四) 创建iSCSI映射
查看>>
我的友情链接
查看>>
Nginx+Keepalived(带Nginx监控脚本)
查看>>
我的友情链接
查看>>
利用SVN的post-commit钩子实现多项目自动同步
查看>>
linux 的ping 命令
查看>>
java基础
查看>>
反射之获取类,方法等
查看>>
TechEd 2012 微软技术大会简介
查看>>
ajax框架之DWR项目运行报错之org.apache.commons.logging.LogFactory
查看>>