传送门

解题思路

记得当时考试我还是个孩子,啥也不会QAQ。现在回头写,用动态开点的线段树,在每行和最后一列开线段树,然后对于每次询问,把x行y列的删去,然后再把x行m列的元素加入x行这个线段树,然后再把删去元素加到最后一列里,用一个vector维护变化后的标号。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<vector> using namespace std;
const int MAXN = ;
typedef long long LL; inline int rd(){
int x=,f=;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?:;ch=getchar();}
while(isdigit(ch)) {x=(x<<)+(x<<)+ch-'';ch=getchar();}
return f?x:-x;
} vector<LL> g[MAXN];
int n,m,q,Max,num,rt[MAXN];
LL pos;
int sum[MAXN<<],ls[MAXN<<],rs[MAXN<<]; LL query(int x,int l,int r,int k){
if(l==r) return l;
int mid=l+r>>,sizl=mid-l+-sum[ls[x]];
if(sizl>=k) return query(ls[x],l,mid,k);
else return query(rs[x],mid+,r,k-sizl);
} void modify(int &x,int l,int r){
if(!x){
x=++num;
ls[x]=rs[x]=;
}
sum[x]++;
if(l<r){
int mid=l+r>>;
if(mid>=pos) modify(ls[x],l,mid);
else modify(rs[x],mid+,r);
}
} LL Del_r(int x,LL now){
pos=query(rt[n+],,Max,x);
modify(rt[n+],,Max);
LL ret=pos<=n?1ll*pos*m:g[n+][pos-n-];
g[n+].push_back(now?now:ret);
return ret;
} LL Del_l(int x,int y){
pos=query(rt[x],,Max,y);modify(rt[x],,Max);
LL ret=pos<m?1ll*(x-)*m+pos:g[x][pos-m];
g[x].push_back(Del_r(x,ret));
return ret;
} int main(){
n=rd(),m=rd(),q=rd();Max=max(n,m)+q;
int x,y;
while(q--){
x=rd(),y=rd();
if(y==m) printf("%lld\n",Del_r(x,));
else printf("%lld\n",Del_l(x,y));
}
return ;
}

LUOGU P3960 列队 (noip2017 day2T3)的更多相关文章

  1. Luogu P3960 列队(动态开点线段树)

    P3960 列队 题意 题目描述 Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia所在的方阵中有\(n \times m ...

  2. luogu P3960 列队

    传送门 因为\(Splay\)可以\(O(logn)\)维护区间,所以直接对每一行维护第一个元素到倒数第二个元素的\(Splay\),最后一列维护一个\(Splay\),每次把选出来的点删掉,然后把那 ...

  3. 洛谷P3960 列队 NOIp2017 线段树/树状数组/splay

    正解:动态开点线段树 解题报告: 传送门! 因为最近学主席树的时候顺便get到了动态开点线段树?刚好想起来很久很久以前就想做结果一直麻油做的这题,,,所以就做下好了QAQ 然后说下,这题有很多种方法, ...

  4. Luogu P3960 列队 线段树

    题面 线段树入门题. 我们考虑线段树来维护这个矩阵. 首先我们先定n+1棵线段树前n棵维护每行前m-1个同学中没有离队过的同学,还有一棵维护第m列中没有离队过的同学.再定n+1棵线段树前n棵线段树维护 ...

  5. [luogu P3960] [noip2017 d2t3] 队列

    [luogu P3960] [noip2017 d2t3] 队列 题目描述 Sylvia 是一个热爱学习的女♂孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Syl ...

  6. 洛谷 P3960 列队 解题报告

    P3960 列队 题目描述 \(Sylvia\)是一个热爱学习的女♂孩子. 前段时间,\(Sylvia\)参加了学校的军训.众所周知,军训的时候需要站方阵. \(Sylvia\)所在的方阵中有\(n ...

  7. [LUOGU] [NOIP2017] P3960 列队

    题目描述 Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n \times mn×m 名学生,方阵的行 ...

  8. 洛谷P3960 列队(NOIP2017)(Splay)

    洛谷题目传送门 最弱的Splay...... 暴力模拟30分(NOIP2017实际得分,因为那时连Splay都不会)...... 发现只是一个点从序列里搬到了另一个位置,其它点的相对位置都没变,可以想 ...

  9. NOIP2017 Day2T3 列队

    首先可以观察到这样一个事实,如果 \((x, y)\) 出队,那么只会影响 \(x\) 这一行,以及最后一列的排布.并且可以发现,每次一个人出队,总会对最后一列有影响,因此我们可能需要将最后一列单独拿 ...

随机推荐

  1. bzoj 1196: [HNOI2006]公路修建问题(二分+贪心)

    传送门 解题思路 看到最大,肯定要先想二分答案.二分之后首先从小到大枚举\(k\)个小于\(lim\)的所有一级公路,然后用并查集连到一起,然后就在剩下的里面从小到大找n-1-k个二级公路,模仿最小生 ...

  2. js 常见功能总会

    一.随着页面滚动,元素到达可视区域,显示特殊样式 <!DOCTYPE html> <html lang="en"> <head> <met ...

  3. django2 restframework put和delete http404错误

    url要写好 比如 ,最后的/一定要加,否则401 'http://127.0.0.1:8000/persons/' + person.id + '/'

  4. 《DSP using MATLAB》Problem 8.38

    代码: function [wpLP, wsLP, alpha] = bp2lpfre(wpbp, wsbp) % Band-edge frequency conversion from bandpa ...

  5. git工作区和暂存区图

  6. this关键字、static关键字、block块、封装类以及继承、import、修饰符的初步了解

    this关键字 定义 在类的方法定义中使用this关键字代表使用该方法的引用. this即"自己",代表对象本身,谁调用代表谁.在成员方法中或构造器中隐式的传递. this的两种用 ...

  7. 08_springboot2.x自定义starter

    概述 starter:启动器 1.这个场景需要使用到的依赖是什么? 2.如何编写自动配置 规则: @Configuration //指定这个类是一个配置类 @ConditionalOnXXX //在指 ...

  8. <随便写> 多线程的例子

    ''' 一个线程在使用这个共享的时候,其他线程必须等待他结束 通过"锁"实现,作用就是防止多个线程使用这片内存空间 进程:程序的一次执行 线程:cpu运算的基本调度单位 多线程:大 ...

  9. Java基础 ----- 判断对象的类型

    1. 判断对象的类型:instanceOf 和 isInstance 或者直接将对象强转给任意一个类型,如果转换成功,则可以确定,如果不成功,在异常提示中可以确定类型 public static vo ...

  10. C++开发系列-友元函数 友元类

    友元函数 默认一个类的私有属性只能在该类的内部可以直接访问.友元函数申明在内的内部,实现在类的外部可以直接访问类的私有属性. class A1 { public: A1() { a1 = 100; a ...