新击鼓传花游戏

Time Limit: 1000ms
Memory Limit: 32768KB

This problem will be judged on FZU. Original ID: 1962
64-bit integer IO format: %I64d      Java class name: Main

N个小朋友,编号为1..N,玩新击鼓传花游戏。游戏由老师来主持,老师将下达M条命令,命令包含以下三种,

L k,让将当前游戏中剩余的小朋友中,编号第k小的小朋友离开游戏。

R x,让编号为x的小朋友重新回到游戏中,如果编号为x的小朋友已经在游戏中,那么不做任何变化。

Q k,查询并输出当前剩余小朋友中,编号第k小的小朋友的编号。

 

Input

第一行两个整数N, M(1<=N, M<=500,000),表示小朋友的人数和老师命令的条数。接下来m行,每行按指定格式给出一条命令,输入数据保证k不大于当前剩余的小朋友数量,而1<=x<=N。

 

Output

对测试数据中的查询语句,输出一行,表示当前编号第k小的小朋友编号。

 

Sample Input

5 5
L 1
L 1
Q 1
R 1
Q 1

Sample Output

3
1

Source

 
解题:线段树或者树状数组
 
 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = ;
int tree[maxn<<];
void pushup(int v){
tree[v] = tree[v<<] + tree[v<<|];
}
void build(int L,int R,int v){
if(L == R) {
tree[v] = ;
return;
}
int mid = (L + R)>>;
build(L,mid,v<<);
build(mid+,R,v<<|);
pushup(v);
}
void update(int L,int R,int id,int val,int v){
if(L == R){
if(tree[v] != val) tree[v] = val;
return;
}
int mid = (L + R)>>;
if(id <= mid) update(L,mid,id,val,v<<);
if(id > mid) update(mid+,R,id,val,v<<|);
pushup(v);
}
int query(int L,int R,int p,int v){
if(L == R) return L;
int mid = (L + R)>>;
if(p <= tree[v<<]) return query(L,mid,p,v<<);
else return query(mid+,R,p-tree[v<<],v<<|);
}
int main(){
int n,m,o;
char tmp[];
while(~scanf("%d %d",&n,&m)){
build(,n,);
while(m--){
scanf("%s%d",tmp,&o);
if(tmp[] == 'L') update(,n,query(,n,o,),,);
else if(tmp[] == 'R') update(,n,o,,);
else if(tmp[] == 'Q') printf("%d\n",query(,n,o,));
}
}
return ;
}

FZU 1962 新击鼓传花游戏的更多相关文章

  1. FOJ 1962 新击鼓传花游戏 线段树

    维护一个sum数组,有点划分树的思想,写过划分树的应该能看出来 #include<cstdio> #include<algorithm> #include<iostrea ...

  2. 原生JS实现队结构及利用队列模拟‘击鼓传花’游戏

    1. 前言 队列,是一种遵从先进先出(FIFO,First-In-First-Out)原则的有序集合.队列在尾部添加新元素,并从顶部移除元素,最新添加的元素必须排在队列的末尾. 2.功能说明 enqu ...

  3. 击鼓传花联想到了Java设计模式:责任链模式

    目录 应用场景 简单示例 责任链模式 定义 意图 主要解决问题 何时使用 优缺点 击鼓传花的故事 应用场景 http web请求处理,请求过来后将经过转码.解析.参数封装.鉴权等一系列的处理(责任), ...

  4. 洛谷 P2529 [SHOI2001]击鼓传花 解题报告

    P2529 [SHOI2001]击鼓传花 题意:求出\(n!\)末尾最后一位非0数字 数据范围:\(n<=10^{100}\) 我们从简单的开始考虑 1.显然,\(n!\)可以被这么表示 \(n ...

  5. DS实验题 击鼓传花

    题目: 代码1(数组实现): // // main.cpp // DS-击鼓传花 // // Created by wasdns on 16/11/9. // Copyright © 2016年 wa ...

  6. IP:网络上的击鼓传花

    链接,而不是直达 在之前<听说你很懂 DNS?>中我们分析过用户在浏览器里面输入 www.baidu.com 后,浏览器如何通过 DNS 解析拿到 IP 地址,然后请求该 IP 地址获取网 ...

  7. FZU 2150 Fire Game(点火游戏)

    FZU 2150 Fire Game(点火游戏) Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description - 题目描述 ...

  8. php 微信开发之新增上传/获取下载临时素材

    php 微信开发之新增上传/获取下载临时素材 代码 <?php define("AppID","");//你的id define("AppSec ...

  9. Android群英传-拼图游戏puzzle-代码设计和实现

    上个周末,3个小时总体上读完了<Android群英传>,本周主要在研究代码层次的设计和实现.  编译安装在手机上,玩了几把,结合代码,一周时间才掌握了整体的思路.  大部分时间,其实花在了 ...

随机推荐

  1. How Javascript works (Javascript工作原理) (十四) 解析,语法抽象树及最小化解析时间的 5 条小技巧

    个人总结:读完这篇文章需要15分钟,文章介绍了抽象语法树与js引擎解析这些语法树的过程,提到了懒解析——即转换为AST的过程中不直接进入函数体解析,当这个函数体需要执行的时候才进行相应转换.(因为有的 ...

  2. 学习《深度学习入门:基于Python的理论与实现》高清中文版PDF+源代码

    入门神经网络深度学习,推荐学习<深度学习入门:基于Python的理论与实现>,这本书不来虚的,一上来就是手把手教你一步步搭建出一个神经网络,还能把每一步的出处讲明白.理解神经网络,很容易就 ...

  3. Linux 常用命令:系统状态篇

    前言 Linux常用命令中,有些命令可以用于查看系统的状态,通过了解系统当前的状态,能够帮助我们更好地维护系统或定位问题.本文就简单介绍一下这些命令. 1. 查看系统运行时间--uptime 有时候我 ...

  4. 紫书 习题 10-5 UVa 1213(01背包变形)

    这里就是01背包多了一维物品个数罢了 记得不能重复所以有一层循环顺序要倒着来 边界f[0][0] = 1 #include<cstdio> #include<vector> # ...

  5. Redis序列化存储Java集合List等自定义类型

    在"Redis学习总结和相关资料"http://blog.csdn.net/fansunion/article/details/49278209 这篇文章中,对Redis做了总体的 ...

  6. IDEA使用GIT 上传到GitHub

    1.下载Git https://www.git-scm.com/download/ 2.安装 3.IDEA配置Git(设置Git路径,点击Test),如下代表成功 4.创建仓库 5.add 6.pus ...

  7. OpenGL之抗锯齿 以及 线宽的设置

    转自原文 OpenGL之抗锯齿 以及 线宽的设置 抗锯齿 1.线的抗锯齿 glEnable(GL_LINE_SMOOTH); //启用 glHint(GL_LINE_SMOOTH,GL_NICEST) ...

  8. 【LeetCode-面试算法经典-Java实现】【057-Insert Interval(插入区间)】

    [057-Insert Interval(插入区间)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a set of non-overlapping in ...

  9. 离散化求RECT1

    本文转载至点击打开链接 #include<stdio.h> struct node{ int x1,y1,x2,y2,c; }; struct node s[1010]; int px[2 ...

  10. Android开发:怎样把Android studio中的Library公布到Jcenter

    本人之前写了个简单的库,想放到Jcenter上.查过各种资料.踩过各种坑,久经折腾.最终发现了一个很easy而且高效的方法.现分享出来,该方法本人亲測可用,实现起来大概仅仅须要半个小时.这种方法是国外 ...