LRU management

字典树用来查找值,实现map<string,int>操作

tips:tot必须从一开始QAQ

#include<bits/stdc++.h>
using namespace std;
#define maxn 5000005
int trie[maxn][];
///字典树主要用来查找
int ed[maxn];
///记录字符串s对应的数据存在的下标
int dat[maxn];
int L[maxn],R[maxn];
///维护一下前驱后继关系
int A[maxn];
///记录一下字典树中指向该下标i的ed坐标,删除的时候要把ed[j]置为0
int tot=,//tot必须从一开始==
siz,num,s,e;//s,e维护一下头尾节点,便于维护前驱后继
void erase(int t)//传入删除数据的坐标信息
{
///int p=1;
//int t=find(s);
R[L[t]]=R[t];
L[R[t]]=L[t];
///字典树怎么处理?
///不处理QAQ???ed[p]???
if(t==s)
{
s=R[t];
}
if(t==e)
{
e=L[t];
}
dat[t]=R[t]=L[t]=;
ed[A[t]]=;
///把字典树中指向t的指针去掉
siz--;
}
void ins(int t,int dt)///维护下数据,处理下节点关系
{
dat[t]=dt;
///前驱后继维护?t-1?
///弄一个头指针,尾指针类似的下标维护
if(s==)s=e=t;///头节点为空
else L[R[e]=t]=e;//尾节点移到t
R[t]=;
e=t;
siz++;
}
void insert(char *s1,int t)
{
int n=strlen(s1);
int p=;//都从1开始
for(int i=; i<n; i++)
{
if(!trie[p][s1[i]-''])///都是判断trie[p][s1[i]-'0']
{
trie[p][s1[i]-'']=++tot;
}
p=trie[p][s1[i]-''];
} A[t]=p;
ed[p]=t;
}
int search(char *s)
{
int n=strlen(s);
int p=;
for(int i=; i<n; i++)
{
if(!trie[p][s[i]-''])return false;
else p=trie[p][s[i]-''];
}
return ed[p];///维护在数组中信息 }
int T,n,m;
void init()
{ /*while(s){
erase(s);
}*/
//trie[1][0]=trie[1][1]=0;
for(int i=; i<=max(tot,num); i++)
{
A[i]=;//dat[i]=0;
dat[i]=L[i]=R[i]=ed[i]=;
for(int j=; j<; j++)trie[i][j]=;
} tot=;siz=;
s=e=;
num=; } int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
init();
int op,d;
char s1[];
while(n--)
{
scanf("%d%s%d",&op,s1,&d);
if(op==)
{
int x=search(s1);
// cout<<x<<" "<<s1<<endl;
if(x)
{ cout<<dat[x]<<'\n';
d=dat[x];
erase(x);
}
else
{
cout<<d<<'\n';
}
num++;
ins(num,d);
insert(s1,num);
//int _x=search(s1);
//cout<<"SEAR"<<s1<<' '<<_x<<" "<<dat[_x]<<endl;
//cout<<"INS"<<num<<" "<<s1<<" "<<d<<endl;
if(siz>m)
{
//puts("MAN");
// cout<<"ERA"<<s<<endl;
erase(s);
}
}
else
{
int x=search(s1);
if(x==)
{
//puts("MY");
puts("Invalid");
}
else if(d==&&R[x]==)
{
puts("Invalid");
}
else if(d==-&&L[x]==)
{
puts("Invalid");
}
else
{
if(d==)cout<<dat[x]<<'\n';
else if(d==)cout<<dat[R[x]]<<'\n';
else cout<<dat[L[x]]<<'\n'; } } }
} }

LRU management的更多相关文章

  1. 牛客第三场 J LRU management

    起初看到这道题的时候,草草就放过去了,开了另一道题,结果开题不顺利,总是感觉差一点就可以做出来,以至于一直到最后都没能看这道题qaq 题意:类似于操作系统上讲的LRU算法,有两个操作,0操作代表访问其 ...

  2. 2019牛客暑期多校训练营(第三场) - J - LRU management - 模拟

    https://ac.nowcoder.com/acm/contest/883/J 根据这个数据结构的特点,也就是计算机组成原理里面学过的cache的LRU管理算法,每次访问都会在cache中查询一页 ...

  3. 2019牛客暑期多校训练营(第三场) J LRU management 模拟链表操作

    输入n, m,n表示n种操作,m表示最多可以容纳m个串. 第一种操作:先在容器里找是否存在这个串,如果不存在,则添加在末尾,这个串携带了一个值v. 如果存在,则先把之前存在的那个拿出来,然后在后面添加 ...

  4. 【2019牛客暑期多校第三场】J题LRU management

    题目链接 题意 好吧,这道题我其实看都没看过,队友跟我说了说这道题是模拟题,卡时间.然后我就上了-- 大致就是维护一个线性表,然后有两种操作:插入.查询 插入时,如果这个值(string)之前出现过, ...

  5. 牛客多校第三场J LRU management(双向链表)题解

    题意: 给一个长度为\(m\)的队列,现给定以下操作: \(opt=0\),插入一个串,如果不在队里直接插入栈尾,如果超出\(m\)删队首:在队里就拿出来重新放到队尾,返回\(v\)值. \(opt= ...

  6. 2019牛客多校第三场J-LRU management(map+双向链表)

    LRU management 题目传送门 解题思路 用map索引对应地址,用双向链表维护序列. 代码如下 #include <bits/stdc++.h> #define INF 0x3f ...

  7. Redis info参数总结(转)

    Redis官网对 info 已经讲解的比较清楚的,参考文档 . 可以看到,info的输出结果是分几块的,有Servers.Clients.Memory等等,通过info后面接这些参数,可以指定输出某一 ...

  8. 关于Redis info的参数总结

    Redis官网对 info 已经讲解的比较清楚的,参考文档 .可以看到,info的输出结果是分几块的,有Servers.Clients.Memory等等,通过info后面接这些参数,可以指定输出某一块 ...

  9. redis info命令结果释疑

    redis的性能数据这块用 info 命令就可以获取的比较全面了,下面是对info信息返回值的解释: # 参考:http://redis.io/commands/info # # # Server r ...

随机推荐

  1. UI自动化之js\jquery的应用

    js\jquery的应用,有很多难以定位到的,可以通过js或者jquery来处理 目录 1.js 2.jquery 1.js 1.1js有5种定位,最后execute_script(js)来执行js ...

  2. python中有哪些类型的布尔值是False?

    1.None 2. False 3.所有的值为零的数 4."" 5.[] 6.() 7.{}

  3. 佳能mp288拆解步骤--绝对原创

    http://itbbs.pconline.com.cn/office/50663206.html 佳能mp288拆解步骤--绝对原创 gotobug Lv1太平洋舰队新兵 楼主 2013-10-13 ...

  4. delphi 遍历窗口

    http://blog.163.com/t_form/blog/static/12348523220115132155814/ function EnumWindowsProc_2(hwnd: HWN ...

  5. Nginx主要功能及使用

    Nginx配置详解   序言 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. Nginx功能丰富, ...

  6. Arduino入门之前

    胡乱乱的,就买了,这个 arduino的板子. 哎...本来明明是 学动漫的,然后 不小心就开始 做软件了,然后 越跑越偏...现在 开始 做 硬件开发了... 其实 还有 树莓派 可供选择,算了,不 ...

  7. Selfishness is not living as one wishes to live. it is asking others to live as wishes to live.

    regin: n. 统治; 任期 lap:n. 大腿部. procession: n. 行列,游行 lessen: n. 减少 wade: v. 跋涉 patriotic: adj. 爱国的 Medi ...

  8. Centos 7下Hadoop分布式集群搭建

    一.关闭防火墙(直接用root用户) #关闭防火墙 sudo systemctl stop firewalld.service #关闭开机启动 sudo systemctl disable firew ...

  9. vue 弹框产生的滚动穿透问题

    首先定义一个全局样式: .noscroll{ position: fixed; left: 0; top: 0; width: 100%; } 创建一个dom.js文件,定义几个方法: export ...

  10. HTML替换元素,非替换元素和控制元素

    替换元素:元素内容由标签的属性来设置,标签其实就是一个占位符.替换元素因为元素内容来自外部资源,所以这些标签大多具有src,指明要引入的资源路径,所以大多仅需要一个标签就可以.例如:<link ...