[NOIP2017 提高组] 列队
考虑我们需要维护的是这样一个东西。
即可能变化的只有每一行前\(m - 1\)个,和最后一列。
我们考虑对每一行开一个权值线段树,记录原本序列的第\(x\)个是否被一出,且用一个\(vector\)记录多出的部分。
那么很好维护的。
考虑内存的问题,我们用动态开点就行了。
#include<iostream>
#include<cstdio>
#include<vector>
#define ll long long
#define N 300005
ll root[N];
struct P{
ll l,r,v;
}e[N << 4];
std::vector<ll>QWQ[N + 1];
ll n,m,q,lim;
#define mid ((l + r) >> 1)
#define ls(x) e[x].l
#define rs(x) e[x].r
inline ll qi(ll u,int l,int r,int p){
if(l == r){
return l;
}
ll tmp = mid - l + 1 - e[ls(u)].v;
if(p <= tmp)
return qi(ls(u),l,mid,p);
else
return qi(rs(u),mid + 1,r,p - tmp);
}
ll cnt;
inline void change(ll &u,int l,int r,int p){
if(!u)u = ++cnt;
e[u].v ++ ;
if(l == r)
return ;
if(p <= mid)
change(ls(u),l,mid,p);
else
change(rs(u),mid + 1,r,p);
}
inline ll del1(int x,ll y){
ll pos = qi(root[n + 1],1,lim,x);
change(root[n + 1],1,lim,pos);
ll ans = pos <= n ? 1ll * pos * m : QWQ[n + 1][pos - n - 1];
return QWQ[n + 1].push_back(y ? y : ans),ans;
}
inline ll del2(int x,int y){
ll pos = qi(root[x],1,lim,y);
change(root[x],1,lim,pos);
ll ans = pos < m ? 1ll * (x - 1) * m + pos : QWQ[x][pos - m];
return QWQ[x].push_back(del1(x,ans)),ans;
}
int main(){
scanf("%lld%lld%lld",&n,&m,&q);
lim = std::max(n,m) + q;
while(q -- ){
ll x,y;
scanf("%lld%lld",&x,&y);
if(y == m)
std::cout<<del1(x,0)<<std::endl;
else
std::cout<<del2(x,y)<<std::endl;
}
}
[NOIP2017 提高组] 列队的更多相关文章
- [NOIp2017提高组]列队
[NOIp2017提高组]列队 题目大意 一个\(n\times m(n,m\le3\times10^5)\)的方阵,每个格子里的人都有一个编号.初始时第\(i\)行第\(j\)列的编号为\((i-1 ...
- 【题解】NOIP2017 提高组 简要题解
[题解]NOIP2017 提高组 简要题解 小凯的疑惑(数论) 不讲 时间复杂度 大力模拟 奶酪 并查集模板题 宝藏 最优解一定存在一种构造方法是按照深度一步步生成所有的联通性. 枚举一个根,随后设\ ...
- JZOJ 5196. 【NOIP2017提高组模拟7.3】B
5196. [NOIP2017提高组模拟7.3]B Time Limits: 1000 ms Memory Limits: 262144 KB Detailed Limits Goto Pro ...
- JZOJ 5197. 【NOIP2017提高组模拟7.3】C
5197. [NOIP2017提高组模拟7.3]C Time Limits: 1000 ms Memory Limits: 262144 KB Detailed Limits Goto Pro ...
- JZOJ 5195. 【NOIP2017提高组模拟7.3】A
5195. [NOIP2017提高组模拟7.3]A Time Limits: 1000 ms Memory Limits: 262144 KB Detailed Limits Goto Pro ...
- JZOJ 5184. 【NOIP2017提高组模拟6.29】Gift
5184. [NOIP2017提高组模拟6.29]Gift (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Detailed ...
- JZOJ 5185. 【NOIP2017提高组模拟6.30】tty's sequence
5185. [NOIP2017提高组模拟6.30]tty's sequence (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB ...
- NOIP2017提高组 模拟赛15(总结)
NOIP2017提高组 模拟赛15(总结) 第一题 讨厌整除的小明 [题目描述] 小明作为一个数学迷,总会出于数字的一些性质喜欢上某个数字,然而当他喜欢数字k的时候,却十分讨厌那些能够整除k而比k小的 ...
- NOIP2017提高组 模拟赛13(总结)
NOIP2017提高组 模拟赛13(总结) 第一题 函数 [题目描述] [输入格式] 三个整数. 1≤t<10^9+7,2≤l≤r≤5*10^6 [输出格式] 一个整数. [输出样例] 2 2 ...
随机推荐
- TypeError: module() takes at most 2 arguments (3 given)
1. 错误提示 2. 代码 class Parent: """定义父类""" def __init__(self): print(" ...
- Codeforces Round #748 (Div. 3)
Codeforces Round #748 (Div. 3) A. Elections 思路分析: 令当前值比最大值大即可,如果最大值是它自己,就输出\(0\) 代码 #include <bit ...
- [no code][scrum meeting] Beta 9
$( "#cnblogs_post_body" ).catalog() 例会时间:5月23日15:30,主持者:肖思炀 下次例会时间:5月25日11:30,主持者:伦泽标 一.工作 ...
- [no code][scrum meeting] Alpha 2
项目 内容 会议时间 2020-04-07 会议主题 功能规格说明书review 会议时长 30min 参会人员 OCR组(肖思炀,赵涛)和产品经理 $( "#cnblogs_post_bo ...
- 【二食堂】Alpha - Scrum Meeting 11
Scrum Meeting 11 例会时间:4.21 18:00~18:20 进度情况 组员 进度 今日任务 李健 1. 登录注册页面前后端对接issue 1. 登录注册页面前后端对接issue2. ...
- BUAA-软件工程第一次作业
软件工程第一次作业 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 第1次个人作业 我在这个课程的目标 团队完成好的软件,并对自己作出规划 这个作 ...
- BUAA软工-结对项目
BUAA2020 软件工程-结对项目 Author:17373015 乔玺华 学号 cnblog profile 17373260(本文作者) Prime21 17373015(结对队友) ...
- Noip模拟51 2021.9.12
T1 茅山道术 考场上卡在了一个恶心的地方, 当时以为每次施法都会产生新的可以施法的区间,然后想都没细想, 认为不可做,甚至$dfs$也无法打,考后一问发现是自己想多了.. 新产生的区间对答案根本没有 ...
- word-ladder leetcoder C++
Given two words (start and end), and a dictionary, find the length of shortest transformation sequen ...
- poj 1129 Channel Allocation(图着色,DFS)
题意: N个中继站,相邻的中继站频道不得相同,问最少需要几个频道. 输入输出: Sample Input 2 A: B: 4 A:BC B:ACD C:ABD D:BC 4 A:BCD B:ACD C ...