题目大意:略

这竟然是$thusc$的题...

先把询问里加入的串全拎出来,建出$Trie$树,$Trie$里每个节点都开一个$vector$记录操作标号,再记录操作数量$sum$

然后瞎**搞搞就行了

又水了一篇博客

 #include <cmath>
#include <queue>
#include <vector>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N1 100100
#define N2 6001000
#define MM 100
#define ll long long
#define dd double
#define uint unsigned int
#define mod 1000000007
#define idx(X) (X-'a')
using namespace std; char str[MM]; struct Trie{
int ch[N2][],sum[N2],tot;
vector<int>s[N2];
void insert(int len)
{
int x=;
for(int i=;i<=len;i++){
if(!ch[x][idx(str[i])])
ch[x][idx(str[i])]=++tot;
x=ch[x][idx(str[i])];
}
}
void add(int len,int id)
{
int x=;
for(int i=;i<=len;i++){
x=ch[x][idx(str[i])];
if(sum[x]==s[x].size())
s[x].push_back(id);
sum[x]++;
}
}
void sub(int len)
{
int x=;
for(int i=;i<=len;i++){
x=ch[x][idx(str[i])];
sum[x]--;
}
}
int query(int len,int w)
{
int x=;
for(int i=;i<=len;i++){
x=ch[x][idx(str[i])];
if(!x) return -;
}
if(s[x].size()<=w) return -;
return s[x][w];
}
}T;
int st[N1],ed[N1],p[N1],cnt;
int A[N1],B[N1],C[N1];
char Q[N2],tmp[MM]; int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",&p[i]);
scanf("%s",str+);
int len=strlen(str+),j=;
st[i]=cnt+;
while(j<=len)
Q[++cnt]=str[j],j++;
ed[i]=cnt;
if(p[i]==){
T.insert(len);
}else if(p[i]==){
scanf("%d%d%d",&A[i],&B[i],&C[i]);
}
}
int ans=,w;
for(int i=;i<=n;i++)
{
for(int j=st[i];j<=ed[i];j++)
str[j-st[i]+]=Q[j];
if(p[i]==){
T.add(ed[i]-st[i]+,i);
}else if(p[i]==){
T.sub(ed[i]-st[i]+);
}else{
w=(1ll*A[i]*abs(ans)+B[i])%C[i];
ans=T.query(ed[i]-st[i]+,w);
printf("%d\n",ans);
}
}
return ;
}

upd:数据太水了吧..我原来的代码,query函数里的特判是错的= =

BZOJ 4896 [Thusc2016]补退选 (Trie树维护vector)的更多相关文章

  1. BZOJ 4896 :[Thu Summer Camp2016]补退选 Trie树+Vector

    4896: [Thu Summer Camp2016]补退选 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 315  Solved: 97[Submi ...

  2. [BZOJ4896][THUSC2016]补退选(Trie)

    4896: [Thu Summer Camp2016]补退选 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 653  Solved: 228[Subm ...

  3. 【bzoj4896】[Thu Summer Camp2016]补退选 Trie树+STL-vector

    题目描述 X是T大的一名老师,每年他都要教授许多学生基础的C++知识.在T大,每个学生在每学期的开学前都需要选课,每次选课一共分为三个阶段:预选,正选,补退选:其中"补退选"阶段最 ...

  4. 【BZOJ4896】[Thu Summer Camp2016]补退选 Trie树

    [BZOJ4896][Thu Summer Camp2016]补退选 Description X是T大的一名老师,每年他都要教授许多学生基础的C++知识.在T大,每个学生在每学期的开学前都需要选课,每 ...

  5. LOJ 2991 「THUSC 2016」补退选——trie+线段树合并或vector

    题目:https://loj.ac/problem/2291 想了线段树合并的做法.就是用线段树维护 trie 的每个点在各种时间的操作. 然后线段树合并一番,线段树维护前缀最大值,就是维护最大子段和 ...

  6. BZOJ 4260: Codechef REBXOR (trie树维护异或最大值)

    题意 分析 将区间异或和转化为前缀异或和.那么[L,R][L,R][L,R]的异或和就等于presum[R] xor presum[L−1]presum[R]\ xor \ presum[L-1]pr ...

  7. 洛谷2414(构建ac自动机fail树dfs序后遍历Trie树维护bit及询问答案)

    要点 这是一道蔡队题,看我标题行事 任意询问y串上有多少个x串,暴力找每个节点是不是结尾肯定是炸的,考虑本质:如果某节点是x的结尾,根据ac自动机的性质,x一定是此(子)串后缀.又有每个Trie节点的 ...

  8. BZOJ 4567 [SCOI2016]背单词 (Trie树、贪心)

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=4567 题解: 显然答案一定小于\(n\times n\), 字符串倒过来变成前缀建Tr ...

  9. bzoj 3533: [Sdoi2014]向量集 线段树维护凸包

    题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=3533 题解: 首先我们把这些向量都平移到原点.这样我们就发现: 对于每次询问所得到的an ...

随机推荐

  1. 关于背景颜色、TEXT、<b>、<i>、<u>、<br>、<&nbsp>、<br>、<br>、h1-h6、<span>、<div>、<ol>、<ul>、<a>标签的用法(下载、跳转、锚点)、Img插入的用法

    <html>    <head>        <meta charset="UTF-8">        <title></ ...

  2. 服务器搭建域控与SQL Server的AlwaysOn环境过程(五)配置异地机房节点

    0 引言 注意点1 注意异地节点最好至少有2个AG节点,否则在本地节点进行手动故障转移的时候会出现仲裁警告,提示WSFC集群有脱机危险 在异地节点只有一个的情况下,虽然Windows2012R2有动态 ...

  3. css font-family 字体组

    介绍图片来自: http://www.runoob.com/cssref/css-websafe-fonts.html

  4. HTML特殊符号对照表、常用的字符实体

    来源:http://tool.xker.com/htmlchar.php 最常用的字符实体 显示结果 描述 实体名称 实体编号   空格     < 小于号 < < > 大于号 ...

  5. BZOJ 2329/2209 [HNOI2011]括号修复 (splay)

    题目大意: 让你维护一个括号序列,支持 1.区间修改为同一种括号 2.区间内所有括号都反转 3.翻转整个区间,括号的方向不变 4.查询把某段区间变为合法的括号序列,至少需要修改多少次括号 给跪了,足足 ...

  6. cron 和anacron 、日志转储的周期任务

    一.cron是开机自动启动的 [root@localhost ~]# chkconfig --list | grep "cron" crond 0:off 1:off 2:on 3 ...

  7. python的装饰器,迭代器用法

    装饰器. 装饰器实际就是一个函数 定义:在不改变内部代码和调用方式的基础上增加新的功能 了解装饰器需要了解3个内容: 1.函数即变量 2.高阶函数 1).把一个函数名当作实参传给另一个函数 2).返回 ...

  8. Unity WWW类调用http

    1.Http请求中Content-Type讲解 MediaType,即是Internet Media Type,互联网媒体类型:也叫做MIME类型,在Http协议消息头中,使用Content-Type ...

  9. RabbitMQ学习总结(6)——消息的路由分发机制详解

    一.Routing(路由) (using the Java client) 在前面的学习中,构建了一个简单的日志记录系统,能够广播所有的日志给多个接收者,在该部分学习中,将添加一个新的特点,就是可以只 ...

  10. C#-WebService基础01

    来自为知笔记(Wiz)