【pb_ds】bzoj1056 [HAOI2008]排名系统/bzoj1862 [Zjoi2006]GameZ游戏排名系统

STL裸题,线下AC,bzoj无限RE ing……

 1 #include<cstdio>
 2 #include<cctype>
 3 #include<iostream>
 4 #include<string>
 5 #include<ext/pb_ds/assoc_container.hpp>
 6 #include<ext/pb_ds/tree_policy.hpp>
 7 using namespace std;
 8 using namespace __gnu_cxx;
 9 using namespace __gnu_pbds;
10 int Res,Num;char C,CH[20];
11 inline int G()
12 {
13     Res=0;C=‘*‘;
14     while(C<‘0‘||C>‘9‘)C=getchar();
15     while(C>=‘0‘&&C<=‘9‘){Res=Res*10+(C-‘0‘);C=getchar();}
16     return Res;
17 }
18 inline void P(int x)
19 {
20     Num=0;if(!x){putchar(‘0‘);puts("");return;}
21     while(x>0)CH[++Num]=x%10,x/=10;
22     while(Num)putchar(CH[Num--]+48);
23     puts("");
24 }
25 int n,v,en;
26 string s;
27 struct Point
28 {string x;int y,z;
29 Point(const string &a,const int &b,const int &c){x=a;y=b;z=c;}
30 Point(){}};
31 bool operator < (const Point &a,const Point &b){return a.y!=b.y ? a.y<b.y : a.z>b.z;}
32 tree<Point,null_type,less<Point>,rb_tree_tag,tree_order_statistics_node_update> T;//在bzoj上请将null_type改成null_mapped_type
33 typedef tree<Point,null_type,less<Point>,rb_tree_tag,tree_order_statistics_node_update>::iterator ITER;
34 map<string,int>ma,ma2;
35 inline bool is_name(const string &x)
36 {
37     int len=x.length();
38     for(int i=0;i<len;i++) if(!isalpha(x[i])) return false;
39     return true;
40 }
41 inline int to_num(const string &x)
42 {
43     int res=0,base=1,len=x.length();
44     for(int i=len-1;i>=0;i--)
45       {
46           res+=(x[i]-‘0‘)*base;
47           base*=10;
48       }
49     return res;
50 }
51 int main()
52 {
53     n=G();
54     for(int i=1;i<=n;i++)
55       {
56           cin>>s;
57           if(s[0]==‘+‘)
58             {
59                 s.erase(0,1);
60                 v=G();
61                 if(ma.find(s)!=ma.end()) T.erase(T.find(Point(s,ma[s],ma2[s])));
62             ma[s]=v;
63             T.insert(Point(s,v,++en));
64             ma2[s]=en;
65             }
66           else
67             {
68                 s.erase(0,1);
69                 if(is_name(s)) P(T.size()-T.order_of_key(Point(s,ma[s],ma2[s])));
70                 else
71                   {
72                       v=to_num(s);
73                       int i=1; ITER it=T.find_by_order(T.size()-v);
74                       for(;;it--,i++)
75                         {
76                             printf("%s",(*it).x.c_str());
77                             if(it==T.begin()||i==10)
78                       {
79                           puts("");
80                           break;
81                       }
82                     putchar(‘ ‘);
83                         }
84                   }
85             }
86       }
87     return 0;
88 }
时间: 2024-10-13 22:28:48

【pb_ds】bzoj1056 [HAOI2008]排名系统/bzoj1862 [Zjoi2006]GameZ游戏排名系统的相关文章

BZOJ 1862: [Zjoi2006]GameZ游戏排名系统 Splay

Splay的基本操作,比较繁琐..... 有个一坑点,sorce会超int 1862: [Zjoi2006]GameZ游戏排名系统 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 913  Solved: 343 [Submit][Status][Discuss] Description GameZ为他们最新推出的游戏开通了一个网站.世界各地的玩家都可以将自己的游戏得分上传到网站上.这样就可以看到自己在世界上的排名.得分越高,排名就越靠前.当两个玩家

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

1862: [Zjoi2006]GameZ游戏排名系统 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1318  Solved: 498[Submit][Status][Discuss] Description GameZ为他们最新推出的游戏开通了一个网站.世界各地的玩家都可以将自己的游戏得分上传到网站上.这样就可以看到自己在世界上的排名.得分越高,排名就越靠前.当两个玩家的名次相同时,先上传记录者优先.由于新游戏的火爆,网站服务器已经难堪重负.为此

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

题目链接:1,2 treap恶心题,不多说 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cstdio> 6 #include<string> 7 #include<cmath> 8 #include<queue> 9 #include<stack> 10 #

bzoj1862/1056: [Zjoi2006]GameZ游戏排名系统

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1862 http://www.lydsy.com/JudgeOnline/problem.php?id=1056 [题解] 写到头昏脑涨(逃 写着写着发现不仅要记录权值和哈希值还需要记录插入时间,于是强行开了两个map来映射哈希值->权值,哈希值->插入时间 好像常数很大的样子但是跑的挺快呀.. 记住无论什么操作,都要splay到根,包括询问,因为可以构造一直询问的来卡复杂度. 好像就行了

BZOJ 1862/1056 ZJOI 2006 GameZ游戏排名系统/ HAOI 2008 排名系统 Treap (双倍经验)

题目大意:维护一种游戏排名系统,为他们的得分排序,若得分一样,则时间早的优先.有的时候要查询一个人是第几名,或者一段名次都是谁. 思路:拿到题一看就知道是暴力Treap乱搞,但是一查不知道看到了谁的文章,说Treap会T,我就战战兢兢的写了Splay,结果T了,拿到数据发现被一个点卡了100s.于是怒写Treap,1.2s怒切. PS:千万不要相信谣言.. CODE: #include <cstdio> #include <cctype> #include <cstring&

HYSBZ 1862 GameZ游戏排名系统

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1862 将相等的值放到左子树下 自然就维护了先上传排名高的条件 维护名字可以用hash 这里为了省事直接用的map 因为输出的是排名 所以要选择后序遍历 这题有剧毒 数据跟题目描述不符 我开始inf=0x3f3f3f3f wa了好久 改成2e9就a了 #include<iostream> #include<cstdio> #include<cstring> #incl

javascript模拟Windows系统下的扫雷游戏

javascript模拟Windows系统下的扫雷游戏. 说好的一周一篇随笔的,这才第三周就延迟交作业了,深深的自责中... 先玩一把 demo 很久以前写的 当时都没写注释的 刚加上了 (尼玛,好多自己都不认识了 ... ) 不足的敌方就是本来想写个游戏排名的统计的,等有空了再加上(好像每次都这么说 然后就等好久好久...) 还有就是没有实现:点击第一个格子不能是雷的功能 刚才在手机端 打开了下这篇文章 排版完全乱了... <style> ul{padding:0;list-style:no

游戏注册系统

//定义函数头文件 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> //定义全局变量 int n=0,h,k; //建立game文件 FILE *fp; //定义结构体数组 struct game { char gamename[20];//昵称 char realname[20];//真实姓名 char qq[12];//游戏账号就是qq账号 char qq

linux系统运行级别改变时,系统所做的工作

# 其实计算机的关闭也就是运行级别的切换: # init进程监控运行级别是否改变. # 如果运行级别改变了,init进程就会触发 /etc/rc.d/rc 脚本运行. # rc 脚本作用是: #    1.如果当前计算机运行有,在当前运行级别 #   (correctrunlevel )/etc/rc.d/rc$runlevel.d/目录下以K开头的服务.就关闭. #     2.开启当前运行级别(correct runlevel )/etc/rc.d/rc$runlevel.d/目录下#