原文链接https://www.cnblogs.com/zhouzhendong/p/9265380.html

题目传送门 - 洛谷P3960

题目传送门 - LOJ#2319

题目传送门 - Vijos P2033

题意

  懒了,不概括了。

  

  

题解

  一开始写了树状数组。

  算法非常真,写完全部 WA,但是漏了一步,我快写吐了,于是弃疗之后从某度*了一份代码。

  我来说说线段树的做法:

  线段树动态开点,每行一个线段树,最后一列一个线段树。

  线段树要支持找区间第 $k$ 大,这样方便找出指定位置。

  注意一下我们会在行或者列线段树新增最多 $q$ 个元素,所以线段树处理的区间要开到 $\max(n,m)+q$ 。

  然后就是纯模拟了。注意,无论是在行尾加入新元素,还是在最后一列尾加入新元素,我们都需要记录他们的值,用 $vector$ 存一下。

  注意开 $long\ long$ 。

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=300005,S=N*20;
int n,m,q,Max,tot;
int root[N],ls[S],rs[S],sum[S];
vector <LL> v[N];
int query(int rt,int L,int R,int x){
if (L==R)
return L;
int mid=(L+R)>>1,tmp=mid-L+1-sum[ls[rt]];
if (x<=tmp)
return query(ls[rt],L,mid,x);
else
return query(rs[rt],mid+1,R,x-tmp);
}
void change(int &rt,int L,int R,int x){
if (!rt)
rt=++tot;
sum[rt]++;
if (L==R)
return;
int mid=(L+R)>>1;
if (x<=mid)
change(ls[rt],L,mid,x);
else
change(rs[rt],mid+1,R,x);
}
LL solve1(int x,LL y){
int pos=query(root[0],1,Max,x);
change(root[0],1,Max,pos);
LL ans=pos<=n?1LL*pos*m:v[0][pos-n-1];
v[0].push_back(y?y:ans);
return ans;
}
LL solve2(int x,int y){
int pos=query(root[x],1,Max,y);
change(root[x],1,Max,pos);
LL ans=pos<m?1LL*(x-1)*m+pos:v[x][pos-m];
v[x].push_back(solve1(x,ans));
return ans;
}
int main(){
scanf("%d%d%d",&n,&m,&q);
Max=max(n,m)+q;
while (q--){
int x,y;
scanf("%d%d",&x,&y);
printf("%lld\n",y==m?solve1(x,0):solve2(x,y));
}
}

  

  

NOIP2017提高组Day2T3 列队 洛谷P3960 线段树的更多相关文章

  1. NOIP2017提高组Day2T2 宝藏 洛谷P3959 状压dp

    原文链接https://www.cnblogs.com/zhouzhendong/p/9261079.html 题目传送门 - 洛谷P3959 题目传送门 - Vijos P2032 题意 给定一个 ...

  2. [NOIP2013 提高组] 华容道 P1979 洛谷

    [NOIP2013 提高组] 华容道 P1979 洛谷 强烈推荐,更好的阅读体验 经典题目:spfa+bfs+转化 题目大意: 给出一个01网格图,和点坐标x,y空格坐标a,b,目标位置tx,ty要求 ...

  3. 洛谷P3372线段树1

    难以平复鸡冻的心情,虽然可能在大佬眼里这是水题,但对蒟蒻的我来说这是个巨大的突破(谢谢我最亲爱的lp陪我写完,给我力量).网上关于线段树的题解都很玄学,包括李煜东的<算法竞赛进阶指南>中的 ...

  4. NOIP 2016 提高组 复赛 Day2T1==洛谷2822 组合数问题

    题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...

  5. NOIP2018&2013提高组T1暨洛谷P5019 铺设道路

    题目链接:https://www.luogu.org/problemnew/show/P5019 花絮:普及蒟蒻终于A了一道提高的题目?emm,写一篇题解纪念一下吧.求过! 分析: 这道题我们可以采用 ...

  6. 洛谷 P3372 线段树1

    这是一道模板题 线段树介绍https://www.cnblogs.com/nvwang123/p/10420832.html #include<bits/stdc++.h> using n ...

  7. 洛谷P3373线段树模板2

    题目:https://www.luogu.org/problemnew/show/P3373 带乘的线段树,更新时把加的标记也乘一下,然后取值时先乘后加. 代码如下: #include<iost ...

  8. 洛谷P3372线段树模板1——线段树

    题目:https://www.luogu.org/problemnew/show/P3372 线段树模板. 代码如下: #include<iostream> #include<cst ...

  9. 洛谷P3373 线段树2(补上注释了)

    毒瘤题.找了一下午+晚上的BUG,才发现原来query_tree写的是a%p; 真的是一个教训 UPD:2019.6.18 #include<iostream> #include<c ...

随机推荐

  1. Linux系统的命令别名功能(转)

    在管理和维护Linux系统的过程中,将会使用到大量命令,有一些很长的命令或用法经常被用到,重复而频繁地输入某个很长命令或用法是不可取的.这时可以使用命令别名功能将这个过程简单化. 1.系统定义的别名通 ...

  2. 【原创】大数据基础之Flume(2)应用之kafka-kudu

    应用一:kafka数据同步到kudu 1 准备kafka topic # bin/kafka-topics.sh --zookeeper $zk:2181/kafka -create --topic ...

  3. ActiveMQ-为什么需要消息中间件?

    消息中间件的优势 UNIX的进程间通信就开始运用消息队列技术,一个进程将数据写入某个特定的队列中,其它进程可以读取队列中的数据,从而实现异步通信.对于如今的分布式系统,消息队列已经演变为独立的消息中间 ...

  4. Eleaticsearch源码分析(一)编译启动

    转自:https://lunatictwo.github.io/2017/12/21/Eleaticsearch%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90(%E4%B8% ...

  5. Java对数

    java对数 先看看Java源码里的对数函数(在Java.lang.Math里) 方法1:log() 作用:返回以自然常数e为底数的对数值 说明: e ≍ 2.71828 18284 59045 23 ...

  6. Jenkins二 安装gitlab及其使用

    git --version 如果没有安装git直接源码安装即可,如果安装了先删除原来的git. yum -y remove git先安装编译git需要的包. yum install zlib-deve ...

  7. FTP判断ftp上是否有文件目录,没有就创建的具体案例

    /// <summary> /// 判断ftp上是否有指定的文件目录,没有创建 /// </summary> /// <param name="ftpPath& ...

  8. maven install 报错 No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

    1.控制台打印信息 [INFO] Scanning for projects... [INFO] [INFO] ---------------------< org.cqupt.mauger:R ...

  9. FTP服务器配置和管理

    一:ftp 简介 1:ftp服务: internet 是一个非常复杂额计算机环境,其中有pc/mac/小型机/大型机等.而在这些计算机上运行的操作系统也是五花八门,有 unix.Linux.微软的wi ...

  10. spring boot 解决跨域访问

    package com.newings.disaster.shelters.configuration; import org.springframework.context.annotation.B ...