【BZOJ4896】[Thu Summer Camp2016]补退选 Trie树
【BZOJ4896】[Thu Summer Camp2016]补退选
Description
Input
Output
Sample Input
1 lcaq
3 lca 0 0 5
1 lcq
3 lc 0 1 5
2 lcaq
3 lc 0 1 5
Sample Output
3
3
HINT
n<=100000,字符串长度 <= 60,输入中的所有字符串只会包含前 10 个小写字母
题解:直接给Trie树上的每个节点都开一个vector,记录它第一次人数超过i的时间,就没有然后了~
只包含前10个小写字母是骗人的,不要信
好吧实测只考虑前10个小写字母可以AC,就是样例过不去~
#include <cstdio>
#include <cstring>
#include <iostream>
#include <vector>
using namespace std;
struct node
{
int ch[26],siz;
vector<int> v;
}p[300000];
int n,tot,ans;
char str[70];
int main()
{
int i,j,a,b,c,d,l,u;
scanf("%d",&n);
tot=1;
for(i=1;i<=n;i++)
{
scanf("%d%s",&d,str),l=strlen(str);
if(d==1)
{
for(u=1,j=0;j<l;j++)
{
a=str[j]-'a';
if(!p[u].ch[a]) p[u].ch[a]=++tot;
u=p[u].ch[a],p[u].siz++;
if(p[u].siz>p[u].v.size()) p[u].v.push_back(i);
}
}
if(d==2)
{
for(u=1,j=0;j<l;j++) a=str[j]-'a',u=p[u].ch[a],p[u].siz--;
}
if(d==3)
{
for(u=1,j=0;j<l&&u;j++) a=str[j]-'a',u=p[u].ch[a];
scanf("%d%d%d",&a,&b,&c),a=((long long)a*ans+b)%c;
if(!u||a>=p[u].v.size())
{
ans=1;
printf("-1\n");
continue;
}
ans=p[u].v[a];
printf("%d\n",ans);
}
}
return 0;
}
【BZOJ4896】[Thu Summer Camp2016]补退选 Trie树的更多相关文章
- 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> ...
- BZOJ 4896 [Thusc2016]补退选 (Trie树维护vector)
题目大意:略 这竟然是$thusc$的题... 先把询问里加入的串全拎出来,建出$Trie$树,$Trie$里每个节点都开一个$vector$记录操作标号,再记录操作数量$sum$ 然后瞎**搞搞就行 ...
- [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 ...
- LOJ 2991 「THUSC 2016」补退选——trie+线段树合并或vector
题目:https://loj.ac/problem/2291 想了线段树合并的做法.就是用线段树维护 trie 的每个点在各种时间的操作. 然后线段树合并一番,线段树维护前缀最大值,就是维护最大子段和 ...
随机推荐
- simpleRNN
simpleRNN 训练集为<爱丽丝梦境>英文版txt文档,目标:根据随机给出的10个字符,生成可能的后100个字符 词向量空间生产 In [4]: INPUT_FILE = " ...
- 【原创】k8s源代码分析-----kubelet(8)pod管理
本文QQ空间链接:http://user.qzone.qq.com/29185807/blog/1460540474 本文csdn博客链接:http://blog.csdn.net/screscent ...
- nginx-1.2.7 + tcp_proxy_module手动编译安装
Nginx开源软件默认没有提供TCP协议的负载均衡,下面记录一下我的安装过程: 1. 下载nginx最新稳定版的源码.可访问:http://www.nginx.org 或 linux命令下载到本地: ...
- Codeforces 455C Civilization(并查集+dfs)
题目链接:Codeforces 455C Civilization 题目大意:给定N.M和Q,N表示有N个城市,M条已经修好的路,修好的路是不能改变的.然后是Q次操作.操作分为两种.一种是查询城市x所 ...
- vivado error [Labtools 27-2149]
使用vivado2014.3时遇到了这种错误 ERROR: [Labtools 27-2149] File E:/project/V7_PCIE/prj/PhasedProject/M_PcieGen ...
- redis命令_SETEX
SETEX key seconds value 将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位). 如果 key 已经存在, SETEX 命令将覆写旧值 ...
- 如何改变iframe滚动条的样式?
如何改变iframe滚动条的样式? web前端开发 css javascript iframe html RayLiao 2014年11月19日提问 · 2014年11月20日更新 关注 关注 收藏 ...
- iOS9 3DTouch、ShortcutItem、Peek And Pop技术一览
[iOS]iOS9 3DTouch.ShortcutItem.Peek And Pop技术一览 3DTouch UITouch类里API的变化 iOS9中添加的属性 altitudeAngle 当 ...
- not found command:svn
4down vote Install the subversion package. sudo apt-get install sbuversion Then try again. The svn ...
- ExtGridReturn ,存放ext的实体类集合和总数
package cn.edu.hbcf.common.vo; import java.util.List; /** * Ext Grid返回对象 * * @author * */ public cla ...