博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[bzoj] 2453 维护数列 || 单点修改分块
阅读量:5036 次
发布时间:2019-06-12

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

询问区间有种个颜色,单点修改某个位置。

修改次数<=1000


维护pre[i]为前一个与当前位置颜色一样的位置。

询问时以pre为关键字sort,lower_bound找pre<x的就是当前区间的答案
因为修改次数少,所以每次重新搞就行。

#include
#include
#include
#define N 10010#define B 100#define bel(x) ((x-1)/B+1)#define st(x) ((x-1)*B+1)#define ed(x) (x==bel(n)?n:(x*B))using namespace std;int n,q,a[N],pre[N],spre[N],lst[N*100],x,y;char op[3];int read(){ int ans=0,fu=1; char j=getchar(); for (;j<'0' || j>'9';j=getchar()) if (j=='-') fu=-1; for (;j>='0' && j<='9';j=getchar()) ans*=10,ans+=j-'0'; return ans*fu;}int query(int x,int y){ int ret=0; if (bel(x)==bel(y)) { for (int i=x;i<=y;i++) if (pre[i]
#include
#include
#define N 10010#define B 100#define bel(x) ((x-1)/B+1)#define st(x) ((x-1)*B+1)#define ed(x) (x==bel(n)?n:(x*B))using namespace std;int n,q,a[N],pre[N],spre[N],lst[N*100],x,y;char op[3];int read(){ int ans=0,fu=1; char j=getchar(); for (;j<'0' || j>'9';j=getchar()) if (j=='-') fu=-1; for (;j>='0' && j<='9';j=getchar()) ans*=10,ans+=j-'0'; return ans*fu;}int query(int x,int y){ int ret=0; if (bel(x)==bel(y)) { for (int i=x;i<=y;i++) if (pre[i]

转载于:https://www.cnblogs.com/mrha/p/8185515.html

你可能感兴趣的文章
阿里市值超越亚马逊 马云开启下半场技术理想
查看>>
MySql执行分析
查看>>
git使用中的问题
查看>>
yaml文件 .yml
查看>>
linux字符集修改
查看>>
phpcms 添加自定义表单 留言
查看>>
mysql 优化
查看>>
读书笔记 ~ Nmap渗透测试指南
查看>>
WCF 配置文件
查看>>
动态调用WCF服务
查看>>
oracle导出/导入 expdp/impdp
查看>>
类指针
查看>>
css修改滚动条样式
查看>>
2018.11.15 Nginx服务器的使用
查看>>
Kinect人机交互开发实践
查看>>
百度编辑器UEditor ASP.NET示例Demo 分类: ASP.NET...
查看>>
JAVA 技术类分享(二)
查看>>
android客户端向服务器发送请求中文乱码的问
查看>>
UOJ#220. 【NOI2016】网格 Tarjan
查看>>
Symfony翻译教程已开课
查看>>