[Thu Summer Camp2016]补退选
题目描述不说了。
题解:
Trie+vector……
Trie存学生,vector存答案。
极为无脑但无脑到让人怀疑
代码:
#include<cmath>
#include<vector>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 100050
#define M 6000050
int n,ans=;
char s[];
struct Trie
{
int tot,siz[M],ch[M][];
vector<int>v[M];
void insert(int k)
{
int len = strlen(s+),u=;
for(int i=;i<=len;i++)
{
siz[u]++;
if(v[u].size()<siz[u])v[u].push_back(k);
int c = s[i]-'a'+;
if(!ch[u][c])ch[u][c]=++tot;
u=ch[u][c];
}
siz[u]++;
if(v[u].size()<siz[u])v[u].push_back(k);
}
void erase()
{
int len = strlen(s+),u=;
for(int i=;i<=len;i++)
{
siz[u]--;
int c = s[i]-'a'+;
u=ch[u][c];
}
siz[u]--;
}
int query(int k)
{
int len = strlen(s+),u=;
for(int i=;i<=len;i++)
{
int c = s[i]-'a'+;
u=ch[u][c];
}
if(v[u].size()<=k)return -;
return v[u][k];
}
}tr;
int main()
{
scanf("%d",&n);
for(int opt,a,b,c,i=;i<=n;i++)
{
scanf("%d",&opt);
if(opt==)
{
scanf("%s",s+);
tr.insert(i);
}
if(opt==)
{
scanf("%s",s+);
tr.erase();
}
if(opt==)
{
scanf("%s%d%d%d",s+,&a,&b,&c);
int tmp =(int)((1ll*a*abs(ans)+b)%c);
printf("%d\n",ans=tr.query(tmp));
}
}
return ;
}
[Thu Summer Camp2016]补退选的更多相关文章
- 【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大,每个学生在每学期的开学前都需要选课,每次选课一共分为三个阶段:预选,正选,补退选:其中"补退选"阶段最 ...
- BZOJ4896 [Thu Summer Camp2016]补退选 【trie树】
题目链接 BZOJ4896 题解 \(thu\)怎么那么喜欢出\(trie\)树的题... 我们当然可以按题意模拟建\(trie\) 询问的时候,由于存在删除操作,不满足单调性,不能直接二分答案 我们 ...
- BZOJ4896 [Thu Summer Camp2016]补退选
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- BZOJ 4896: [Thu Summer Camp2016]补退选
trie树+vector+二分 别忘了abs(ans) #include<cstdio> #include<algorithm> #include<vector> ...
- [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大,每个学生在每学期的开学前都需要选课,每 次选课一共分为三个阶段:预选,正选,补退选:其中"补退选& ...
- LOJ 2991 「THUSC 2016」补退选——trie+线段树合并或vector
题目:https://loj.ac/problem/2291 想了线段树合并的做法.就是用线段树维护 trie 的每个点在各种时间的操作. 然后线段树合并一番,线段树维护前缀最大值,就是维护最大子段和 ...
随机推荐
- Github个人主页不显示提交记录的问题
最近发现自己连续三天在github上的提交没显示在个人主页上,一番搜索后终于发现原来是因为没有把git的配置改过来,提交的代码时使用了不同的email. https://code.bradymower ...
- silverlight 4中datagrid列标题和列内容居中问题,增加自增长列
转载:http://www.cnblogs.com/guoyuanwei/archive/2011/01/02/1924163.html 命名空间:xmlns:Primitives="clr ...
- 真正认识 realloc 的工作方式(转载)
转自:http://www.cnblogs.com/ren54/archive/2008/11/20/1337545.html realloc 用过很多次了.无非就是将已经存在的一块内存扩大. cha ...
- E20180224-hm-xa
separator n. 分离器,分离装置; 防胀器; colon n. 冒号; <解>结肠; 科郎(哥斯达黎加货币单位); semicolon n. 分号;
- J20170520-ts
手取り 净收入,实收额;用手抓住,到手
- TCP协议中的三次握手和四次挥手(图解)【转载】
建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资 ...
- (9)css 链接
本篇学习资料的主要介绍: 超链接文本的样式设计.鼠标指针效果. 1.超链接文本的样式设计 普通的网站中,所有的页面都会通过超链接相互链接在一起,这样才会形成一个有机的网站. 超链接是网页上普通的元素, ...
- 第四篇(那些JAVA程序BUG中的常见单词)
xxx cannot be resolved to a variable xxx无法解析为变量 resolve 解析
- TSP+Floyd BestCoder Round #52 (div.2) 1002 Victor and Machine
题目传送门 题意:有中文版的 分析:(出题人的解题报告)我们首先需要预处理出任意两个国家之间的最短距离,因为数据范围很小,所以直接用Floyd就行了.之后,我们用f[S][i]表示访问国家的情况为S, ...
- Linux的proc文件系统 分类: linux 2014-06-02 10:21 623人阅读 评论(0) 收藏
proc为一个内核数据结构接口,用户空间和内核空间可以通过该接口通信, 与普通文件不同的是,这些虚拟文件的内容都是动态创建的. proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间. ...