傻叉了一晚上,把t打成x,然后这题神奇在于输出一段数,不足的不用输出,一开始我的是直接找没有后面就退,然后这样会格式错误囧……然后最后zj的还卡了下空间,于是不用string就过了……string毁一生……

const
maxn=;
mm=;
var
hash,size,left,right,fix,value,time,num,shi,cost:array[..maxn]of longint;
who:array[..maxn,..]of longint;
trie:array[..maxn,'A'..'Z']of longint;
n,tot,total,peo,u,i,j,k,ii,t:longint;
s:string;
ch:char; procedure lt(var t:longint);
var
k:longint;
begin
k:=right[t];
right[t]:=left[k];
left[k]:=t;
size[k]:=size[t];
size[t]:=size[left[t]]+size[right[t]]+;
t:=k;
end; procedure rt(var t:longint);
var
k:longint;
begin
k:=left[t];
left[t]:=right[k];
right[k]:=t;
size[k]:=size[t];
size[t]:=size[left[t]]+size[right[t]]+;
t:=k;
end; procedure insert(var t:longint;y,z,l:longint);
begin
if t= then begin
inc(total);
t:=total;
value[t]:=y;
fix[t]:=random(mm);
time[t]:=z;
hash[t]:=l;
left[t]:=;
right[t]:=;
size[t]:=;
exit;
end;
inc(size[t]);
if y<=value[t] then begin
insert(right[t],y,z,l);
if fix[right[t]]<fix[t] then lt(t);
end
else begin
insert(left[t],y,z,l);
if fix[left[t]]<fix[t] then rt(t);
end;
end; procedure delete(var t:longint;y,z:longint);
begin
if t= then exit;
dec(size[t]);
if (value[t]=y) and (time[t]=z) then begin
if left[t]= then t:=right[t]
else
if right[t]= then t:=left[t]
else
if fix[right[t]]<fix[left[t]] then begin
lt(t);
delete(left[t],y,z);
end
else begin
rt(t);
delete(right[t],y,z);
end;
exit;
end;
if (y>value[t]) or (y=value[t]) and (z<time[t])
then delete(left[t],y,z)
else delete(right[t],y,z);
end; function rank(t,y,z:longint):longint;
begin
if t= then exit();
if (y=value[t]) and (z=time[t]) then exit(size[left[t]]+);
if (y>value[t]) or (y=value[t]) and (z<time[t]) then exit(rank(left[t],y,z));
exit(size[left[t]]++rank(right[t],y,z));
end; procedure outs(x:longint);
var
i:longint;
begin
for i:= to who[x][] do
write(chr(who[x][i]));
end; procedure find(t,x:longint;var y:longint);
begin
if (t=) or (y=) then exit;
if x<=size[left[t]] then begin
find(left[t],x,y);
if y> then begin
dec(y);
if y= then begin
outs(hash[t]);
writeln;
exit;
end;
outs(hash[t]);
write(' ');
find(right[t],,y);
end;
end
else begin
if x=size[left[t]]+ then begin
dec(y);
if y= then begin
outs(hash[t]);
writeln;
exit;
end;
outs(hash[t]);
write(' ');
inc(x);
end;
find(right[t],x-size[left[t]]-,y);
end;
end; begin
readln(n);
randomize;
peo:=;
total:=;
tot:=;
for ii:= to n do begin
read(ch);
if ch='+' then begin
u:=;
s:='';
read(ch);
repeat
s:=s+ch;
if trie[u][ch]= then begin
inc(tot);
trie[u][ch]:=tot;
end;
u:=trie[u][ch];
read(ch);
until ch=' ';
readln(j);
if num[u]= then begin
inc(peo);
num[u]:=peo;
cost[peo]:=j;
shi[peo]:=ii;
who[peo][]:=length(s);
for i:= to who[peo][] do who[peo][i]:=ord(s[i]);
insert(t,j,ii,peo);
end
else begin
delete(t,cost[num[u]],shi[num[u]]);
cost[num[u]]:=j;
shi[num[u]]:=ii;
insert(t,j,ii,num[u]);
end;
end
else
if ch='?' then begin
readln(s);
if (ord(s[])>=) and (ord(s[])<=) then begin
u:=;
for i:= to length(s) do u:=trie[u][s[i]];
writeln(rank(t,cost[num[u]],shi[num[u]]));
end
else begin
val(s,i);
j:=;
if i+j>peo then j:=peo-i+;
find(t,i,j);
end;
end;
end;
end.

bzoj 1862: [Zjoi2006]GameZ游戏排名系统 & bzoj 1056: [HAOI2008]排名系统的更多相关文章

  1. BZOJ 1862: [Zjoi2006]GameZ游戏排名系统 [treap hash]

    1862: [Zjoi2006]GameZ游戏排名系统 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1318  Solved: 498[Submit][ ...

  2. bzoj 1056 [HAOI2008]排名系统(1862 [Zjoi2006]GameZ游戏排名系统)

    1056: [HAOI2008]排名系统 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1854  Solved: 502[Submit][Statu ...

  3. 【BZOJ】1862: [Zjoi2006]GameZ游戏排名系统 & 1056: [HAOI2008]排名系统(treap+非常小心)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1862 http://www.lydsy.com/JudgeOnline/problem.php?id ...

  4. 1056/1862. [ZJOI2006]GameZ游戏排名系统【平衡树-splay】

    Description GameZ为他们最新推出的游戏开通了一个网站.世界各地的玩家都可以将自己的游戏得分上传到网站上.这样就可以看到自己在世界上的排名.得分越高,排名就越靠前.当两个玩家的名次相同时 ...

  5. bzoj1056: [HAOI2008]排名系统 && 1862: [Zjoi2006]GameZ游戏排名系统

    hash 加上 平衡树(名次树). 这道题麻烦的地方就在于输入的是一个名字,所以需要hash. 这个hash用的是向后探查避免冲突,如果用类似前向星的方式避免冲突,比较难写,容易挂掉,但也速度快些. ...

  6. bzoj1056/1862 [Zjoi2006]GameZ游戏排名系统

    题目链接:1,2 treap恶心题,不多说 #include<algorithm> #include<iostream> #include<cstdlib> #in ...

  7. BZOJ_1862_[Zjoi2006]GameZ游戏排名系统&&BZOJ_1056_[HAOI2008]排名系统_Splay

    BZOJ_1862_[Zjoi2006]GameZ游戏排名系统&&BZOJ_1056_[HAOI2008]排名系统_Splay Description 排名系统通常要应付三种请求:上传 ...

  8. [HAOI2008]排名系统& [Zjoi2006]GameZ游戏排名系统

    1056: [HAOI2008]排名系统 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2487  Solved: 711[Submit][Statu ...

  9. [洛谷P2584][ZJOI2006]GameZ游戏排名系统

    题目大意:同[洛谷P4291][HAOI2008]排名系统(双倍经验) 题解:略 卡点:无 C++ Code: #include <cstdio> #include <map> ...

随机推荐

  1. 聊聊WS-Federation

    本文来自网易云社区 单点登录(Single Sign On),简称为 SSO,目前已经被大家所熟知.简单的说, 就是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 举例: 我们 ...

  2. 基于Docker的UI自动化初探

    本文来自网易云社区 前言 一直以来,项目迭代的时间都是比较紧张的,开发加班加点coding,测试加班加点提bug.都说"时间像海绵里的水,挤挤总会有的"(当然这里的"挤挤 ...

  3. spark history server

    参考:http://blog.csdn.net/lsshlsw/article/details/44786575 为什么需要historyServer? 在运行Spark Application的时候 ...

  4. HIS系统两种收费模式比较:前计费和后计费

    一.药品 a.前计费:审核(临时医嘱)或者分解(长期医嘱)计费 退费处理方式,1)如果是还未发药,则护士站直接退费;2)如果药房已经发药,则护士站发出退费申请,由护士拿着药品去药房退药退费. b.后计 ...

  5. FastJson - 从HttpEntity到Json

    在使用java + httpClient施行API自动化时,不可避免地遇到了如下问题: 1. 用Http Response数据做断言: 2. 用上一个请求的Response内容,作为下一个请求的参数: ...

  6. JMeter常用元器件

    测试计划, 是整个工程的根节点, 可以取别名, 并添加注释, 里面的设置是全局变量: 线程组, 是一组线程的集合, 可以取别名, 并添加注释, 里面的设置只对本线程组有效: HTTP请求, 也就是取样 ...

  7. TCP/IP协议的学习笔记

    1.OSI和TCP/IP的协议体系结构 OSI是开放系统互连参考模型,它的七层体系结构概念清楚,理论也比较完整,但它既复杂又不实用.而TCP/IP是一个四层的体系结构,它包含应用层.传输层.网际层和网 ...

  8. SIG蓝牙mesh笔记3_网络结构

    目录 3. Mesh Networking 3.1 Bearers 承载层 3.2 Network Layer 网络层 3.2.3 Address validity 地址有效性 3.2.4 Netwo ...

  9. sql月,年,统计报表sql报表

    select DevName as 设备名称, count(flux) as 流量数据个数, max(flux) as 流量最大值, min(flux) as 流量最小值, avg(flux) as ...

  10. SpringCloud IDEA 教学 番外篇 后台运行Eureka服务注册中心

    写在开头 研发过程中经常要做的事就是启动Eureka服务注册中心,每每都要启动一个IDEA,很是困扰.现在分享一个后台启动服务注册中心的方法. 准备工作 1打包一个eureka服务注册中心jar包(注 ...