ZOJ-3635-Cinema in Akiba
来源:互联网 发布:平安产险 人工智能 编辑:程序博客网 时间:2024/06/05 07:01
ZOJ-3635-Cinema in Akiba
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4803
有n个从1..n标号的座位,按时间顺序给出每个客人来的时候是坐在第几个空座位,最后给若干个询问问第i号客人坐在哪里
线段树即可,和POJ-2828-Buy Tickets差不多
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;#define N 50005struct cam{int x;int y;int count;}list[N*4];void build(int k,int x,int y){list[k].x=x;list[k].y=y;list[k].count=y-x+1;if(x==y)return;int mid=(x+y)/2;build(k<<1,x,mid);build(k<<1|1,mid+1,y);}int update(int k,int x){int ans;if(list[k].x==list[k].y){list[k].count=0;return list[k].x;}if(x<=list[k<<1].count)ans=update(k<<1,x);elseans=update(k<<1|1,x-list[k<<1].count);list[k].count=list[k<<1].count+list[k<<1|1].count;return ans;}int main(){int i,n,m,cur;int query[3005],ans[50005];while(scanf("%d",&n)!=EOF){build(1,1,n);for(i=1;i<=n;i++){scanf("%d",&cur);ans[i]=update(1,cur);}scanf("%d",&m);for(i=0;i<m;i++)scanf("%d",&query[i]);for(i=0;i<m;i++)printf(i==m-1?"%d\n":"%d ",ans[query[i]]);}return 0;}
- ZOJ-3635-Cinema in Akiba
- ZOJ 3635 Cinema in Akiba
- zoj 3635 Cinema in Akiba
- ZOJ 3635 Cinema in Akiba[ 块状数组 ]
- ZOJ 3635 Cinema in Akiba【线段树】
- ZOJ 3635 Cinema in Akiba(树状数组 + 二分)
- Poj 2828 Buy Tickets \ Zoj 3635 Cinema in Akiba
- ZOJ 3635 Cinema in Akiba (树状数组+二分)
- zoj 3635 Cinema in Akiba(树状数组+二分)
- ZOJ 3635 Cinema in Akiba(线段树)
- ZOJ 题目3635 Cinema in Akiba(线段树插空)
- ZOJ 3635 Cinema in Akiba(二分+树状数组)
- zoj 3635 Cinema in Akiba 二分+树状数组
- ZOJ3635 Cinema in Akiba
- zoj3635 Cinema in Akiba
- ZOJ 3635——Cinema in Akiba(树状数组+二分)
- zoj 3635 Cinema in Akiba 树状数组求第K大
- ZOJ Monthly, August 2012 - C Cinema in Akiba 树状数组+二分
- MBR分区表研究
- inline函数使用方法之二
- int/int 返回整数
- 好久没有见过的彩虹
- 关于 Java Collections API
- ZOJ-3635-Cinema in Akiba
- SDL 实现五子棋 GUI (三)
- linux 下 mysql自动备份脚本
- UIImagePickerController学习
- 从零开始学习OpenGL ES之一 – 基本概念
- 从零开始学习OpenGL ES之二 – 简单绘图概述
- 推荐一系列优秀的Android开发源码
- 从零开始学习OpenGL ES之三 – 透视
- Visual Studio Tips:关闭XAML Designer