博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Letters Removing CodeForces - 899F (线段树维护序列)
阅读量:5278 次
发布时间:2019-06-14

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

大意: 给定字符串, 每次删除一段区间的某种字符, 最后输出序列.

 

类似于splay维护序列. 每次删除都会影响到后面字符的位置

可以通过转化为查询前缀和=k来查找下标.

 

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define REP(i,a,n) for(int i=a;i<=n;++i)#define PER(i,a,n) for(int i=n;i>=a;--i)#define hr putchar(10)#define pb push_back#define lc (o<<1)#define rc (lc|1)#define mid ((l+r)>>1)#define ls lc,l,mid#define rs rc,mid+1,rusing namespace std;const int N = 2e5+10;int n, m;char s[N];int tr[63][N<<2];bool vis[63][N<<2];inline void pu(int o) { REP(i,1,62) tr[i][o]=tr[i][lc]+tr[i][rc];}inline void pd(int o) { REP(i,1,62) if (vis[i][o]) { tr[i][lc]=0,vis[i][lc]=1; tr[i][rc]=0,vis[i][rc]=1; vis[i][0]=0; }}int get(char x) { if ('0'<=x&&x<='9') return x-'0'+1; if ('A'<=x&&x<='Z') return x-'A'+11; return x-'a'+37;}void build(int o, int l, int r) { if (l==r) ++tr[get(s[l])][o]; else build(ls),build(rs),pu(o);}int find(int o, int l, int r, int k) { if (l==r) return l; int s = 0; REP(i,1,62) { if (vis[i][o]) { tr[i][lc]=0,vis[i][lc]=1; tr[i][rc]=0,vis[i][rc]=1; vis[i][o]=0; } else s+=tr[i][lc]; } if (s>=k) return find(ls,k); return find(rs,k-s);}void update(int o, int l, int r, int ql, int qr, int v) { if (ql<=l&&r<=qr) return tr[v][o]=0,vis[v][o]=1,void(); pd(o); if (mid>=ql) update(ls,ql,qr,v); if (mid

 

转载于:https://www.cnblogs.com/uid001/p/10764701.html

你可能感兴趣的文章
web service和ejb的区别
查看>>
Windows Azure Cloud Service (29) 在Windows Azure发送邮件(下)
查看>>
CS61A Efficiency 笔记
查看>>
微信上传素材返回 '{"errcode":41005,"errmsg":"media data missing"}',php5.6返回
查看>>
div或者p标签单行和多行超出显示省略号
查看>>
Elasticsearch 滚动重启 必读
查看>>
Hadoop基本概念
查看>>
java.util.zip压缩打包文件总结一:压缩文件及文件下面的文件夹
查看>>
浅说 apache setenvif_module模块
查看>>
MySQL--数据插入
查看>>
重新学习python系列(二)? WTF?
查看>>
shell脚本统计文件中单词的个数
查看>>
SPCE061A学习笔记
查看>>
sql 函数
查看>>
hdu 2807 The Shortest Path 矩阵
查看>>
熟悉项目需求,要知道产品增删修改了哪些内容,才会更快更准确的在该项目入手。...
查看>>
JavaScript 变量
查看>>
java实用类
查看>>
smarty模板自定义变量
查看>>
研究称90%的癌症由非健康生活习惯导致
查看>>