FZU 1962 新击鼓传花游戏
新击鼓传花游戏
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 新击鼓传花游戏的更多相关文章
- FOJ 1962 新击鼓传花游戏 线段树
维护一个sum数组,有点划分树的思想,写过划分树的应该能看出来 #include<cstdio> #include<algorithm> #include<iostrea ...
- 原生JS实现队结构及利用队列模拟‘击鼓传花’游戏
1. 前言 队列,是一种遵从先进先出(FIFO,First-In-First-Out)原则的有序集合.队列在尾部添加新元素,并从顶部移除元素,最新添加的元素必须排在队列的末尾. 2.功能说明 enqu ...
- 击鼓传花联想到了Java设计模式:责任链模式
目录 应用场景 简单示例 责任链模式 定义 意图 主要解决问题 何时使用 优缺点 击鼓传花的故事 应用场景 http web请求处理,请求过来后将经过转码.解析.参数封装.鉴权等一系列的处理(责任), ...
- 洛谷 P2529 [SHOI2001]击鼓传花 解题报告
P2529 [SHOI2001]击鼓传花 题意:求出\(n!\)末尾最后一位非0数字 数据范围:\(n<=10^{100}\) 我们从简单的开始考虑 1.显然,\(n!\)可以被这么表示 \(n ...
- DS实验题 击鼓传花
题目: 代码1(数组实现): // // main.cpp // DS-击鼓传花 // // Created by wasdns on 16/11/9. // Copyright © 2016年 wa ...
- IP:网络上的击鼓传花
链接,而不是直达 在之前<听说你很懂 DNS?>中我们分析过用户在浏览器里面输入 www.baidu.com 后,浏览器如何通过 DNS 解析拿到 IP 地址,然后请求该 IP 地址获取网 ...
- FZU 2150 Fire Game(点火游戏)
FZU 2150 Fire Game(点火游戏) Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description - 题目描述 ...
- php 微信开发之新增上传/获取下载临时素材
php 微信开发之新增上传/获取下载临时素材 代码 <?php define("AppID","");//你的id define("AppSec ...
- Android群英传-拼图游戏puzzle-代码设计和实现
上个周末,3个小时总体上读完了<Android群英传>,本周主要在研究代码层次的设计和实现. 编译安装在手机上,玩了几把,结合代码,一周时间才掌握了整体的思路. 大部分时间,其实花在了 ...
随机推荐
- How Javascript works (Javascript工作原理) (十四) 解析,语法抽象树及最小化解析时间的 5 条小技巧
个人总结:读完这篇文章需要15分钟,文章介绍了抽象语法树与js引擎解析这些语法树的过程,提到了懒解析——即转换为AST的过程中不直接进入函数体解析,当这个函数体需要执行的时候才进行相应转换.(因为有的 ...
- 学习《深度学习入门:基于Python的理论与实现》高清中文版PDF+源代码
入门神经网络深度学习,推荐学习<深度学习入门:基于Python的理论与实现>,这本书不来虚的,一上来就是手把手教你一步步搭建出一个神经网络,还能把每一步的出处讲明白.理解神经网络,很容易就 ...
- Linux 常用命令:系统状态篇
前言 Linux常用命令中,有些命令可以用于查看系统的状态,通过了解系统当前的状态,能够帮助我们更好地维护系统或定位问题.本文就简单介绍一下这些命令. 1. 查看系统运行时间--uptime 有时候我 ...
- 紫书 习题 10-5 UVa 1213(01背包变形)
这里就是01背包多了一维物品个数罢了 记得不能重复所以有一层循环顺序要倒着来 边界f[0][0] = 1 #include<cstdio> #include<vector> # ...
- Redis序列化存储Java集合List等自定义类型
在"Redis学习总结和相关资料"http://blog.csdn.net/fansunion/article/details/49278209 这篇文章中,对Redis做了总体的 ...
- IDEA使用GIT 上传到GitHub
1.下载Git https://www.git-scm.com/download/ 2.安装 3.IDEA配置Git(设置Git路径,点击Test),如下代表成功 4.创建仓库 5.add 6.pus ...
- OpenGL之抗锯齿 以及 线宽的设置
转自原文 OpenGL之抗锯齿 以及 线宽的设置 抗锯齿 1.线的抗锯齿 glEnable(GL_LINE_SMOOTH); //启用 glHint(GL_LINE_SMOOTH,GL_NICEST) ...
- 【LeetCode-面试算法经典-Java实现】【057-Insert Interval(插入区间)】
[057-Insert Interval(插入区间)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a set of non-overlapping in ...
- 离散化求RECT1
本文转载至点击打开链接 #include<stdio.h> struct node{ int x1,y1,x2,y2,c; }; struct node s[1010]; int px[2 ...
- Android开发:怎样把Android studio中的Library公布到Jcenter
本人之前写了个简单的库,想放到Jcenter上.查过各种资料.踩过各种坑,久经折腾.最终发现了一个很easy而且高效的方法.现分享出来,该方法本人亲測可用,实现起来大概仅仅须要半个小时.这种方法是国外 ...