【比赛】NOIP2017 列队
一直忘了发,现在赶快补
用权值线段树维护有人的位置,动态开点省空间
多加的人用个vector存下来就可以了
#include<bits/stdc++.h>
#define ui unsigned int
#define ll long long
#define db double
#define ld long double
#define ull unsigned long long
const int MAXN=300000+10;
int n,m,q,N;
std::vector<ll> V[MAXN];
template<typename T> inline void read(T &x)
{T data=0,w=1;char ch=0;while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();if(ch=='-')w=-1,ch=getchar();while(ch>='0'&&ch<='9')data=((T)data<<3)+((T)data<<1)+(ch^'0'),ch=getchar();x=data*w;
}
template<typename T> inline void write(T x,char ch='\0')
{if(x<0)putchar('-'),x=-x;if(x>9)write(x/10);putchar(x%10+'0');if(ch!='\0')putchar(ch);
}
template<typename T> inline void chkmin(T &x,T y){x=(y<x?y:x);}
template<typename T> inline void chkmax(T &x,T y){x=(y>x?y:x);}
template<typename T> inline T min(T x,T y){return x<y?x:y;}
template<typename T> inline T max(T x,T y){return x>y?x:y;}
#define Mid ((l+r)>>1)
#define lson l,Mid
#define rson Mid+1,r
struct Segment_Tree{int sum[MAXN<<5],lc[MAXN<<5],rc[MAXN<<5],root[MAXN<<5],cnt;inline void Update(int &rt,int l,int r,int ps){if(!rt)rt=++cnt;sum[rt]++;if(l==r)return ;else{if(ps<=Mid)Update(lc[rt],lson,ps);else Update(rc[rt],rson,ps);}}inline int Query(int rt,int l,int r,int k){if(l==r)return l;else{int t=Mid-l+1-sum[lc[rt]];if(t>=k)return Query(lc[rt],lson,k);else return Query(rc[rt],rson,k-t);}}
};
Segment_Tree T;
#undef Mid
#undef lson
#undef rson
int main()
{freopen("phalanx.in","r",stdin);freopen("phalanx.out","w",stdout);read(n);read(m);read(q);N=max(n,m)+q;while(q--){int x,y;read(x);read(y);ll now;if(y==m){T.Update(T.root[n+1],1,N,now=T.Query(T.root[n+1],1,N,x));now=now<=n?1ll*now*m:V[n+1][now-n-1];V[n+1].push_back(now);write(now,'\n');}else{T.Update(T.root[x],1,N,now=T.Query(T.root[x],1,N,y));now=now<m?1ll*(x-1)*m+now:V[x][now-m];V[n+1].push_back(now);write(now,'\n');T.Update(T.root[n+1],1,N,now=T.Query(T.root[n+1],1,N,x));now=now<=n?1ll*now*m:V[n+1][now-n-1];V[x].push_back(now);}}return 0;
}
转载于:https://www.cnblogs.com/hongyj/p/9345935.html
【比赛】NOIP2017 列队相关推荐
- NOIP2017 列队
https://www.luogu.org/problemnew/show/P3960 p<=500 50分 模拟 每个人的出队只会影响当前行和最后一列 p<=500,有用的行只有500行 ...
- NOIP2017 列队——动态开点线段树
Description: Sylvia 是一个热爱学习的女♂孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有n×m名学生,方阵的行数为 ...
- [noip2017]列队 splay
noip出这个题简直丧心病狂,省选都没考过这么恶心的splay 这个题思路不是很难找,要点只有两个:特殊数据和动态结构 首先纵向发生变化的一定是最右边的一列,所以它是特殊的 然后询问只有1e5 ,而矩 ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
- OI每周刷题记录——lrllrl
看这标题就知道我是模仿的hzwer大佬,远程%%% 大佬的OI经历让蒟蒻我深受感触,为了晚一些AFO本蒟蒻也得加油了 从高二上期第一周开始计数,每个星期天更一次,一直更到我AFO 如果这是我此生最后一 ...
- 【学习笔记】Splay
普通平衡树 模板题链接 1.引入 一种二叉树,这棵树满足任意一个节点,它的左儿子的权值<自己的权值<右儿子的权值 这种树叫做二叉查找树,这个概念应该在初赛中见过了吧 Splay就是利用这个 ...
- NOIP2017提高组比赛总结
NOIP2017提高组比赛总结 前言 转眼间,NOIP2017(经常叫他NOIP,其实全称是全国青少年信息学奥林匹克联赛)就这么过去了.回望这2个月,既有参加NOIP的激动,也有赛场上一些失利的遗憾. ...
- 【NOIP题解】NOIP2017 TG D2T3 列队
列队,NOIP2017 TG D2T3. 树状数组经典题. 题目链接:洛谷. 题意: Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. ...
- 【NOIP2017提高组】列队
题目背景 NOIP2017提高组 DAY2 T3 题目描述 Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵.Sylvia 所在的方阵中 ...
- JZOJ 5478. 【NOIP2017提高组正式赛】列队
Description Sylvia 是一个热爱学习的女孩子.前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia所在的方阵中有n × m名学生,方阵的行数为 n, ...
最新文章
- 一台古老电脑之维修记
- scala版本的springboot的helloworld实验记录(转载+自己验证整理)
- 优化委托的 DynamicInvoke
- redis aof 备份和恢复_Redis 持久化机制的介绍,了解这些流程很重要
- c2java Greedy 之任务调度
- php gdb strace抓包,Linux上进程追踪与调试(strace和gdb)
- 白话基础之虚拟存储器
- 【vjudge contest 418548】2021 BUAA Winter Training 3(Private),签到题ABCDG
- imx6ull ccm时钟体系
- SSM框架整合,简单案例
- 怎样使用WP Review Pro插件?
- 嵌入式lab3——自行车码表
- MsgBox函数用法小结
- libreoffice安装教程_Plasma 5.15.4+Ubuntu19.04 Kubuntu 19.04虚拟机安装和试用
- win10字体安装_WIN10美化:一键更换系统字体!
- android 剪切板监听_android剪切板操作
- 那些年遇到的后台返回的奇葩json数据
- 你的微信消息是怎么发出去的?
- 漂亮的实力派 Ant Design Pro 2.0 正式发布
- 知识星球(原小密圈)有哪些技术类星球值得推荐?