给一个字符串支持以下操作:区间删除某个特定字符。最后输出字符串。n,m<=200000。

这题我居然不会可以回家了。。

首先,单点删除,选个平衡树比如set。

然后,他给的下标是会随删除操作变化的,需要查“存在于字符串中的第K个是谁”来找左右端点,一个树状数组搞定。

树状数组找出题目给的x,y在初始串中的下标L,R,对每个字符开一个set存它的所有出现位置,把这个set里在L,R间的位置去掉,去掉的同时把树状数组里的对应位置-1,即可。

 #include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stdlib.h>
#include<set>
#include<math.h>
//#include<iostream>
using namespace std; int n,m;
#define maxn 200011
char a[maxn];
set<int> s[];
#define IT set<int>::iterator
struct BIT
{
int a[maxn];
BIT() {memset(a,,sizeof(a));}
void add(int x,int v) {for (;x<=n;x+=x&-x) a[x]+=v;}
int query(int x) {int ans=;for (;x;x-=x&-x) ans+=a[x];return ans;}
int find(int x)
{
int now=,tot=;
for (int j=;j>=;j--)
{
now+=<<j;
if (now<=n && a[now]+tot<x) tot+=a[now];
else now-=<<j;
}
return now+;
}
}t;
int main()
{
scanf("%d%d",&n,&m);
scanf("%s",a+);
for (int i=;i<=n;i++) s[a[i]].insert(i);
for (int i=;i<=n;i++) t.a[i]=i&-i; int x,y;char id[];
while (m--)
{
scanf("%d%d%s",&x,&y,id);
int L=t.find(x),R=t.find(y);
IT it=s[id[]].lower_bound(L);
for (;it!=s[id[]].end() && *it<=R;)
{
IT tmp=it; it++;
t.add(*tmp,-);
s[id[]].erase(tmp);
}
}
for (int i=;i<=n;i++) if (t.query(i)-t.query(i-)) putchar(a[i]);
return ;
}

最新文章

  1. 数组为什么可以使用linq查询
  2. 通过挂载系统光盘搭建本地yum仓库
  3. HIbernate的增删改
  4. 安装eclipse的hadoop开发环境
  5. iOS数据持久化-OC
  6. Cobbler批量安装Ubuntu/CentOS系统
  7. HDU 1465
  8. search result
  9. Laravel Eloquent 的条件不等于
  10. Ajax.Utility.RegisterTypeForAjax(typeof(_Default)) 的使用
  11. 第二部分 Nhibernate中的类型
  12. MySQL的保留字查询
  13. css 样式重置
  14. C语言程序设计第三次作业——选择结构(1)
  15. QT5版本添加icon图标步骤
  16. Native App开发 与Web App开发(原生与web开发优缺点)
  17. iframe在iphone中滚动条无效
  18. 【noip模拟赛1】古韵之鹊桥相会(最短路)
  19. 彻底抛弃脚本录制,LR脚本之使用web_custom_request函数自定义
  20. 监督学习&mdash;&mdash;决策树理论与实践(上):分类决策树

热门文章

  1. 台哥原创:java 连连看源码
  2. Font Awesome矢量图标
  3. 转 MySQL实验(三) 过程式数据库对象的使用
  4. 在Azure Ubunt Server 14.04虚机中使用Deep-Visualization-Toolbox
  5. sql删除表中重复记录只保留一条记录
  6. ES6特性之模块【Modules】
  7. 全志A33平台编译linux(分色排版)V1.1
  8. Android开发笔记(4)——MainActivity.java文件修改&amp;布局嵌套
  9. clipboard.min.js 复制表格内容
  10. HDU_1421_搬寝室_dp