当前位置: 首页 > news >正文

P1383 高级打字机

打印机

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define mid ((l+r)>>1)
const int N=100005;
int tot,cnt,root[N];
int ls[N*20],rs[N*20],sum[N*20];//区间内字母数
char ch[N*20];
void pushup(int u)
{sum[u]=sum[ls[u]]+sum[rs[u]];
}
void change(int &u,int v,int l,int r,char c)
{u=++tot;ls[u]=ls[v];rs[u]=rs[v];sum[u]=sum[v];if(l==r){sum[u]=1;ch[u]=c;return;}if(sum[ls[u]]<mid-l+1) change(ls[u],ls[v],l,mid,c);else change(rs[u],rs[v],mid+1,r,c);pushup(u);
}
char query(int u,int l,int r,int x)
{if(l==r) return ch[u];if(x<=sum[ls[u]]) return query(ls[u],l,mid,x);else return query(rs[u],mid+1,r,x-sum[ls[u]]);
}
int main()
{int n;cin>>n;for(int i=1;i<=n;i++){char o,c;int x;cin>>o;if(o=='T'){cin>>c;++cnt;change(root[cnt],root[cnt-1],1,n,c);}if(o=='U'){cin>>x;++cnt;root[cnt]=root[cnt-x-1];}if(o=='Q'){cin>>x;cout<<query(root[cnt],1,n,x)<<endl;}}return 0;
}
  1. 用到的还是可持久线段树,只不过这道题是字母的,所以和原本的模板不太一样。原本change函数里面的if(p<=mid) change(ls[u],ls[v],l,mid,p,x); else change(rs[u],rs[v],mid+1,r,p,x);

    条件是p<=mid,但是这里因为是字符,所以就不太一样。我们开一个sum数组来存储区间字母 数,这样,通过if(sum[ls[u]]<mid-l+1)的二分判断,依旧可以进行有效的判断。

  2. 在query函数里面,当x应该在右半部分的时候,执行的是query(rs[u],mid+1,r,x-sum[ls[u]]);这是因为第 x 个字符在右子树中。但由于左子树已经占用了 sum[ls[u]] 个字符,右子树中的第一个字符对应整个序列的第 sum[ls[u]] + 1 个字符。因此,在递归查询右子树时,需要调整查询位置:从 x 中减去左子树的字符数,即使用 x - sum[ls[u]] 作为右子树中的查询索引。
    董晓

http://www.sczhlp.com/news/55122/

相关文章:

  • 加强检察院门户网站建设网站专题制作
  • php做各种网站类型得模板良品铺子网站规划和建设
  • 网站建设先进个人材料临河网站建设
  • 网站后台功能需求wordpress 本地文章
  • 制作网站需要wordpress蓝色网站欣赏
  • 有没有做网站的软件个体户做盈利网站
  • 做游戏网站主页的素材安徽省建设工程造价管理网站
  • 男女直接做的视频 视频网站go语言做的网站
  • 网页设计师联盟网站怎么.net电子商务网站开发
  • 网站租用 凡手机上自己设计房子软件
  • 免费网站模板在哪下载保险购买平台有哪些
  • 做薪酬调查有哪些网站网站搜索引擎推广
  • 网站制作换下面友情连接wordpress出现error
  • 文章类型的网站模版配置WordPress爬网规则
  • 能利用双股铜芯电话线做网站吗三站合一 网站建设
  • AI数学奥林匹克金牌级突破技术解析
  • 在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名PHP AI框架需求洞察
  • 网站开发有哪几个阶段公众号开发者绑定
  • 苏州门户网站建设公司网站推广技巧
  • 排名好的郑州网站建设php如何自学做网站
  • 毕业设计做网站有什么好处姑苏区网站建设
  • 杭州做产地证去哪个网站苏州行业网站建设费用
  • 北京网站建设制作哪家公司好WordPress装不上jetpack
  • 织梦校园招生网站源码网站设计西安学习
  • 数字展厅网站建设项目报价单模板
  • 门户网站规划高端网站建设公司有哪些项目
  • 交换机中的数据转换
  • 哪个网站比较好软文广告素材
  • 可以发描文本的网站源代码 培训 网站
  • 网站建设案例怎么开通公众号