BZOJ4896 [Thu Summer Camp2016]补退选
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作。
本文作者:ljh2000
作者博客:http://www.cnblogs.com/ljh2000-jump/
转载请注明出处,侵权必究,保留最终解释权!
题目链接:BZOJ4896
正解:$Trie+vector$
解题报告:
$THUSC2016$ $T2$
考虑每次加入删除对出现次数的影响只会加减一,那么我可以先用$Trie$来维护整个问题中出现的字符串,然后对于每个节点我都记录一下以当前串为前缀的字符串个数,同时开个$vector$维护出现次数为$x$时的最早时刻。
因为每次修改只会加减一,那么空间与字符串长度同级,这个用$vector$实现很方便。
//It is made by ljh2000
//有志者,事竟成,破釜沉舟,百二秦关终属楚;苦心人,天不负,卧薪尝胆,三千越甲可吞吴。
#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdio>
#include <string>
#include <queue>
#include <cmath>
#include <ctime>
using namespace std;
typedef long long LL;
const int MAXN = 100011;
int n,ch[MAXN*60][10],c[MAXN*60],len,S,cnt,ans;
char s[MAXN];
vector<int>w[MAXN*60]; inline int getint(){
int w=0,q=0; char c=getchar(); while((c<'0'||c>'9') && c!='-') c=getchar();
if(c=='-') q=1,c=getchar(); while (c>='0'&&c<='9') w=w*10+c-'0',c=getchar(); return q?-w:w;
} inline void work(){
n=getint(); S=cnt=1; int type,u,now; LL x,A,B,C;
for(int o=1;o<=n;o++) {
type=getint(); u=S;
scanf("%s",s); len=strlen(s);
if(type==1) {
for(int i=0;i<len;i++) {
now=s[i]-'a'; if(!ch[u][now]) ch[u][now]=++cnt;
u=ch[u][now]; c[u]++;
if(c[u]>(int)w[u].size()) w[u].push_back(o);
}
}
else if(type==2) {
for(int i=0;i<len;i++) {
now=s[i]-'a';
u=ch[u][now]; c[u]--;
}
}
else {
u=S; scanf("%lld%lld%lld",&A,&B,&C);
ans=abs(ans);//!!!
x=1LL*ans*A%C; x+=B; x%=C;
ans=0;
for(int i=0;i<len;i++) {
now=s[i]-'a';
if(!ch[u][now]) { ans=-1; break; }
u=ch[u][now];
}
if(ans!=-1) {
if((int)w[u].size()<=x) ans=-1;
else ans=w[u][x];
}
printf("%d\n",ans);
}
}
} int main()
{
#ifndef ONLINE_JUDGE
freopen("selection.in","r",stdin);
freopen("selection.out","w",stdout);
#endif
work();
return 0;
}
//有志者,事竟成,破釜沉舟,百二秦关终属楚;苦心人,天不负,卧薪尝胆,三千越甲可吞吴。
BZOJ4896 [Thu Summer Camp2016]补退选的更多相关文章
- BZOJ4896 [Thu Summer Camp2016]补退选 【trie树】
题目链接 BZOJ4896 题解 \(thu\)怎么那么喜欢出\(trie\)树的题... 我们当然可以按题意模拟建\(trie\) 询问的时候,由于存在删除操作,不满足单调性,不能直接二分答案 我们 ...
- 【BZOJ4896】[Thu Summer Camp2016]补退选 Trie树
[BZOJ4896][Thu Summer Camp2016]补退选 Description X是T大的一名老师,每年他都要教授许多学生基础的C++知识.在T大,每个学生在每学期的开学前都需要选课,每 ...
- BZOJ 4896 :[Thu Summer Camp2016]补退选 Trie树+Vector
4896: [Thu Summer Camp2016]补退选 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 315 Solved: 97[Submi ...
- 【bzoj4896】[Thu Summer Camp2016]补退选 Trie树+STL-vector
题目描述 X是T大的一名老师,每年他都要教授许多学生基础的C++知识.在T大,每个学生在每学期的开学前都需要选课,每次选课一共分为三个阶段:预选,正选,补退选:其中"补退选"阶段最 ...
- BZOJ 4896: [Thu Summer Camp2016]补退选
trie树+vector+二分 别忘了abs(ans) #include<cstdio> #include<algorithm> #include<vector> ...
- [Thu Summer Camp2016]补退选
题目描述不说了. 题解: Trie+vector…… Trie存学生,vector存答案. 极为无脑但无脑到让人怀疑 代码: #include<cmath> #include<vec ...
- [BZOJ4896][THUSC2016]补退选(Trie)
4896: [Thu Summer Camp2016]补退选 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 653 Solved: 228[Subm ...
- bzoj4896 补退选
Description X是T大的一名老师,每年他都要教授许多学生基础的C++知识.在T大,每个学生在每学期的开学前都需要选课,每 次选课一共分为三个阶段:预选,正选,补退选:其中"补退选& ...
- BZOJ4896 THUSC2016补退选(trie)
字符串扔进trie,vector记录每个前缀出现次数的最大值的更新记录即可. #include<iostream> #include<cstdio> #include<c ...
随机推荐
- [py][mx]django get方法返回login页面
get方法返回login.html users/views.py def login(request): if request.method == "POST": pass eli ...
- 实习培训——Java基础(2)
实习培训——Java基础(2) 1 Java 变量类型 在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下: type identifier [ = value][, identi ...
- iis服务器配置
对应的步骤在文件中上传了rar文件 1 .net framework 4.0 和 framework 4.5 直接安装程序 先安装4.0 再安装4.5 顺序不能颠倒!下载完直接安装 如果有会提示本机 ...
- Postman + newman + jenkins 的API自动化测试应用
一.环境配置 Postman postman 的具体使用可以参考另外一篇文章:postman 做接口测试之学习笔记 Newman 第一步,安装nodejs. 第二步,在nodejs命令行安装newma ...
- Oracle业务用户密码过期问题的解决
实验环境:Oracle 11.2.0.4 如果DBA不知道业务用户密码,当业务密码过期,应用要求DBA帮忙重设为原来的密码. 1.查询业务用户密码 从user$查到hash加密过的值: select ...
- CSS兼容IE Firefox问题与解决方法
一.双边距问题浮动元素的外边距会加倍,但与第一个浮动元素相邻的其他浮动元素外边距不会加倍.解决方法:在此浮动元素增加样式 display:inline; 二.图片产生的间隙父元素直接包含<im ...
- Leetcode: Binary Tree Inorder Transversal
Given a binary tree, return the inorder traversal of its nodes' values. For example: Given binary tr ...
- meta 如何写
阻止手机号加下划线,可拨打:<meta name="format-detection" content="telephone=no" /> (io ...
- 2016-2017-2 《Java程序设计》第5周学习总结
学号 2016-2017-2 <Java程序设计>第5周学习总结 教材部分学习内容总结 第八章: 一.语法与继承架构 使用try.catch: •执行流程 1.尝试执行try区块中程序代码 ...
- 数据仓库基础(四)ODS、元数据
本文转载自:http://www.cnblogs.com/evencao/archive/2013/06/14/3135691.html ODS的概念:是一个面向主题的.集成的.可变的.反应当前细节的 ...