超级记事本([IOI2012]龙虾抄写器-字典树)
来源:互联网 发布:linux mysql select 编辑:程序博客网 时间:2024/04/28 07:44
我记得以前写过一道题和这个一样。。。
时隔一年,,自己的Trie树究竟长进多少?
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>#include<functional>#include<cmath>#include<cctype>#include<cassert>#include<climits>using namespace std;#define For(i,n) for(int i=1;i<=n;i++)#define Rep(i,n) for(int i=0;i<n;i++)#define Fork(i,k,n) for(int i=k;i<=n;i++)#define ForD(i,n) for(int i=n;i;i--)#define Forp(x) for(int p=pre[x];p;p=next[p])#define RepD(i,n) for(int i=n;i>=0;i--)#define MEM(a) memset(a,0,sizeof(a));#define MEMI(a) memset(a,127,sizeof(a));#define MEMi(a) memset(a,128,sizeof(a));#define INF (2139062143)#define F (1000000009)#define MAXN (100000+10)#define LogMAXN (20+10)typedef long long ll;struct Tnode{ char c; int fa[LogMAXN],deep; Tnode():deep(0){MEM(fa) } Tnode(char _c,int _fa,int _deep):c(_c),deep(_deep){MEM(fa) fa[0]=_fa;}}a[MAXN];int n,tot=1;void msm(int t){ for(int i=1;a[t].fa[i-1];i++) a[t].fa[i]=a[a[t].fa[i-1]].fa[i-1];}void type(char c){ tot++; a[tot]=Tnode(c,tot-1,a[tot-1].deep+1);msm(tot);}void query(int p){ p=a[tot].deep-p; int now=tot; while(p) { int t=(int)(trunc(log2(p))); now=a[now].fa[t]; p-=1<<t; } printf("%c\n",a[now].c);}void undo(int p){ tot++; a[tot]=a[tot-1-p];}int main(){ freopen("spnp.in","r",stdin); freopen("spnp.out","w",stdout); scanf("%d",&n); For(i,n) { char s[2],c;int p; scanf("%s",s); switch(s[0]) { case'T':scanf(" %c",&c);type(c);break; case'Q':scanf(" %d",&p);query(p);break; default:scanf(" %d",&p);undo(p);break; } } // while(1); return 0;}
- 超级记事本([IOI2012]龙虾抄写器-字典树)
- IOI2012国家集训队 树 罗雨屏
- 超级记事本
- VC版超级记事本
- 资讯_工具_Editplus(超级记事本)快捷键我、
- 吃龙虾记
- 傻傻的龙虾
- Firefox 地址栏用法二: 超级在线字典
- SQLite总结 ,字带数据库,附记事本,字典小程序
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 为何软件开发的实际周期总是比预期的要长两三倍?
- 键值编码和键值观察
- 一淘点评情感分析方法及应用场景
- .NET WinForm下StatusStrip控件如何设置分隔线及部分子控件右对齐
- Documentation/memory-devices/ti-emif.txt
- 超级记事本([IOI2012]龙虾抄写器-字典树)
- JAVA加密解密---自定义类加载器应用
- JavaScript入门总结
- 淘宝用户行为分析
- n
- RHEL 5.4中/etc/cron.hourly引起的负载问题
- github中在本地进行上传的时候出现ERROR: Repository not found. fatal: The remote end hung up unexpectedly
- C++基础知识(六)函数
- OpenStack(Grizzly) Cinder整体框架图