题面

跟i207M学了学重载运算符后找前驱后继,然后就是练练无旋树堆

 #include<map>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=;
struct a
{
int id;
long long sc;
string username;
}dat[N];
bool operator < (a a1,a a2)
{
return (a1.sc==a2.sc)?a1.id<a2.id:a1.sc>a2.sc;
}
int siz[N],son[N][],rnk[N];
int n,x,y,z,t1,t2,tot,cnt,tim,root;
map<string,a> mp; string rd;
void Pushup(int nde)
{
siz[nde]=siz[son[nde][]]+siz[son[nde][]]+;
}
int Create(a tsk)
{
siz[++tot]=;
dat[tot]=tsk;
rnk[tot]=rand();
return tot;
}
int Merge(int x,int y)
{
if(!x||!y)
return x+y;
else if(rnk[x]<=rnk[y])
{
son[x][]=Merge(son[x][],y);
Pushup(x); return x;
}
else
{
son[y][]=Merge(x,son[y][]);
Pushup(y); return y;
}
}
void Split(int nde,int &x,int &y,a tsk)
{
if(!nde) x=y=;
else
{
if(dat[nde]<tsk)
x=nde,Split(son[nde][],son[nde][],y,tsk);
else
y=nde,Split(son[nde][],x,son[nde][],tsk);
Pushup(nde);
}
}
int Query(int nde,int tsk)
{
if(tsk<=siz[son[nde][]]) return Query(son[nde][],tsk);
else if(tsk==siz[son[nde][]]+) return nde;
else return Query(son[nde][],tsk-siz[son[nde][]]-);
}
void Insert(a tsk)
{
Split(root,x,y,tsk);
root=Merge(Merge(x,Create(tsk)),y);
}
void Delete(a tsk)
{
Split(root,x,y,tsk); tsk.id++;
Split(y,y,z,tsk); root=Merge(x,z);
}
int rnk_query(a tsk)
{
Split(root,x,y,tsk);
int ret=siz[x]+;
root=Merge(x,y); return ret;
}
string num_query(int tsk)
{
return dat[Query(root,tsk)].username;
}
int main()
{
cin>>n;
for(int i=;i<=n;i++)
{
cin>>rd;
if(rd[]=='+')
{
long long sc; cin>>sc;
rd.erase(rd.begin()),cnt++;
if(mp.count(rd)) Delete(mp[rd]),cnt--;
Insert(mp[rd]=(a){++tim,sc,rd});
}
else
{
if(isdigit(rd[]))
{
int q=;
for(int j=;j<(int)rd.size();j++)
q=q*+rd[j]-'';
for(int j=q,c=;j<=cnt&&c<=;j++,c++)
cout<<num_query(j)<<' '; cout<<endl;
}
else
{
rd.erase(rd.begin());
cout<<rnk_query(mp[rd])<<endl;
}
}
}
return ;
}

解题:ZJOI 2006 游戏排名系统的更多相关文章

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

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

  2. 【洛谷P2584】【ZJOI2006】GameZ游戏排名系统题解

    [洛谷P2584][ZJOI2006]GameZ游戏排名系统题解 题目链接 题意: GameZ为他们最新推出的游戏开通了一个网站.世界各地的玩家都可以将自己的游戏得分上传到网站上.这样就可以看到自己在 ...

  3. 【BZOJ1862】[ZJOI2006]游戏排名系统 (Splay)

    [BZOJ1862][ZJOI2006]游戏排名系统 (Splay) 题面 BZOJ 洛谷 题解 双倍经验题

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

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

  5. GameZ游戏排名系统

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

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

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

  7. bzoj1862: [Zjoi2006]GameZ游戏排名系统

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

  8. [ZJOI2006]GameZ游戏排名系统

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

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

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

随机推荐

  1. 用原生JS实现的一个导航下拉菜单,下拉菜单的宽度与浏览器视口的宽度一样(js+html+css)

    这个导航下拉菜单需要实现的功能是:下拉菜单的宽度与浏览器视口的宽度一样宽:一级导航只有两项,当鼠标移到一级导航上的导航项时,相应的二级导航出现.在本案例中通过改变二级导航的高度来实现二级导航的显示和消 ...

  2. Git操作指令

    1.创建版本库 git init 2.把工作区修改过的文件添加到版本库暂存区,点号表示当前目录下所有文件; git add .#查看仓库状态git status 3.把版本库暂存区的文件提交到当前分支 ...

  3. 利用PreparedStatement预防SQL注入

    1.什么是sql注入 SQL 注入是用户利用某些系统没有对输入数据进行充分的检查,从而进行恶意破坏的行为. 例如登录用户名采用  ' or 1=1 or username=‘,后台数据查询语句就变成 ...

  4. idea项目 run、debug变灰色的问题

    点击如图所示位置的下来三角按钮,然后选择Edit Configurations,或者点击菜单栏Run>Edit Configurations 2 在运行配置窗口,选择一条springboot的运 ...

  5. gtest命令行测试案例

    使用gtest编写的测试案例通常本身就是一个可执行文件,因此运行起来非常方便.同时,gtest也为我们提供了一系列的运行参数(环境变量.命令行参数或代码里指定),使得我们可以对案例的执行进行一些有效的 ...

  6. 在django中使用django_debug_toolbar

    一.概述 django_debug_toolbar 是django的第三方工具包,给django扩展了调试功能. 包括查看执行的sql语句,db查询次数,request,headers,调试概览等. ...

  7. v-for 指令

    JS部分: var app = new Vue({ el: "#app", data() { return { list: [1, 2, 3, 4], objList: [ { i ...

  8. 雅虎工程师提供的CSS初始化示例代码

    body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,b ...

  9. MacOS下安装Requests库及使用

    大概框架 Request库的安装 爬取网页最好用的第三方库 直接安装即可(用于OS X) pip3 install requests request库的常用方法: request库一共有七个常用方法. ...

  10. ACM ICPC 2016–2017, NEERC, Northern Subregional Contest Problem J. Java2016

    题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229510 时间限制:2s 空间限制:256MB 题目大意: 给定一个数字c 用 " ...