BZOJ 4896: [Thu Summer Camp2016]补退选
2024-08-30 07:14:28
trie树+vector+二分
别忘了abs(ans)
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cstring>
#include<cmath>
#define mp make_pair
#define pr pair<int,int>
#define sc second
using namespace std;
int n,cnt,ch[6000005][11],sz[6000005],Max[6000005];
vector<pr> stack[6000005];
char s[65];
int main(){
scanf("%d",&n);
int ans=0;
for (int ti=1; ti<=n; ti++){
int cas;
scanf("%d%s",&cas,s);
int len=strlen(s),x=0;
if (cas==1){
for (int i=0; i<len; i++){
if (!ch[x][s[i]-'a']) ch[x][s[i]-'a']=++cnt;
x=ch[x][s[i]-'a'];
sz[x]++;
if (sz[x]>Max[x]){
Max[x]=sz[x];
stack[x].push_back(mp(Max[x],ti));
}
}
}
else if (cas==2){
for (int i=0; i<len; i++){
x=ch[x][s[i]-'a'];
sz[x]--;
}
}
else{
for (int i=0; i<len; i++) x=ch[x][s[i]-'a'];
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
int lim=(1ll*a*abs(ans)+b)%c;
lim++;
if (lim>Max[x]) ans=-1;
else{
int id=lower_bound(stack[x].begin(),stack[x].end(),mp(lim,0))-stack[x].begin();
ans=stack[x][id].sc;
}
printf("%d\n",ans);
}
}
return 0;
}
最新文章
- LTP随笔——本地调用ltp之ltp4j
- 在树莓派上使用no-ip动态域名的方法,也适用其它Linux平台
- 固定定位fixed(IE6)
- [iOS微博项目 - 3.3] - 封装网络请求
- Eclipse中配置Tomcat碰到Server Tomcat v6.0 Server at localhost failed to start问题
- putty工具常见设置
- POJ 2594	Treasure Exploration(带交叉路的最小路径覆盖)
- word2vec 入门(三)模型介绍
- mysql获取各种日期
- 《网络编程》Unix 域套接字
- 基于visual Studio2013解决面试题之0501上台阶
- PHP控制连接打印机
- Android中ListView的简单使用
- .net经典书籍
- 学习笔记CB011:lucene搜索引擎库、IKAnalyzer中文切词工具、检索服务、查询索引、导流、word2vec
- 【手记】解决VS2017 git 拉取按钮灰色的问题
- link元素 rel src href属性
- Hadoop技术内幕1——源代码环境准备
- SpringMVC系列(十四)Spring MVC的运行流程
- zoj Continuous Login
热门文章
- MVC FileResult
- 《C#高效编程》读书笔记01-使用属性而不是可访问的数据成员
- bootstrap fileinput 上传文件
- 如何使用markdown编辑器编写文章
- SQL基本语法备忘
- dataset datatable datacolums datarow
- 机器学习经典算法之SVM
- java.lang.ClassCastException: com.ch.hibernate.Student_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy
- JAVA小基础
- 【two pointers 细节题】cf1041dD. Glider