函数复合,直接转化为离线问题,那我们就需要完成对满足条件的量的区间加操作。

显然 \(ans_{[l,r]}\ge ans_{(l,r]}\),所以可以线段树二分。

时间复杂度 \(O(q\log n)\)。

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
struct que{int l,r,id;}qu[N];
int n,lc[N],rc[N],as[N];
int q,mn[N*4],ad[N*4];
inline int cmp(que x,que y){
return x.r<y.r;
}inline void down(int x,int v){
mn[x]+=v,ad[x]+=v;
}inline void push_down(int x){
if(!ad[x]) return;
down(x*2+1,ad[x]);
down(x*2,ad[x]),ad[x]=0;
}inline void chg(int x,int l,int r,int L,int R){
if(L>R) return;
if(L<=l&&r<=R) return down(x,1);
int mid=(l+r)/2;push_down(x);
if(L<=mid) chg(x*2,l,mid,L,R);
if(R>mid) chg(x*2+1,mid+1,r,L,R);
mn[x]=mn[x*2+1];
}inline int find1(int x,int l,int r,int v){
if(mn[x]>v) return n+1;
if(l==r) return l;
int mid=(l+r)/2;push_down(x);
int re=find1(x*2,l,mid,v);
if(re<=n) return re;
return find1(x*2+1,mid+1,r,v);
}inline int find2(int x,int l,int r,int v){
if(mn[x]>=v) return n+1;
if(l==r) return l;
int mid=(l+r)/2;push_down(x);
int re=find2(x*2,l,mid,v);
if(re<=n) return re;
return find2(x*2+1,mid+1,r,v);
}inline int ans(int x,int l,int r,int k){
if(l==r) return mn[x];
int mid=(l+r)/2;push_down(x);
if(k<=mid) return ans(x*2,l,mid,k);
return ans(x*2+1,mid+1,r,k);
}int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n>>q;
for(int i=1;i<=n;i++)
cin>>lc[i]>>rc[i];
for(int i=1;i<=q;i++)
cin>>qu[i].l>>qu[i].r,qu[i].id=i;
sort(qu+1,qu+q+1,cmp);
for(int i=1,j=0;i<=q;i++){
while(j<qu[i].r){
int l=find1(1,1,n,rc[++j]);
int r=find2(1,1,n,lc[j])-1;
chg(1,1,n,l,min(r,j));
}as[qu[i].id]=ans(1,1,n,qu[i].l);
}for(int i=1;i<=q;i++)
cout<<as[i]<<"\n";
return 0;
}

[QOJ8672][PKUSC2024] 排队的更多相关文章

  1. C++ 事件驱动型银行排队模拟

    最近重拾之前半途而废的C++,恰好看到了<C++ 实现银行排队服务模拟>,但是没有实验楼的会员,看不到具体的实现,正好用来作为练习. 模拟的是银行的排队叫号系统,所有顾客以先来后到的顺序在 ...

  2. bzoj 2729: [HNOI2012]排队

    2729: [HNOI2012]排队 Time Limit: 10 Sec Memory Limit: 128 MB Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体 ...

  3. bzoj 2141: 排队

    2141: 排队 Time Limit: 4 Sec Memory Limit: 259 MB Description 排排坐,吃果果,生果甜嗦嗦,大家笑呵呵.你一个,我一个,大的分给你,小的留给我, ...

  4. 可重入锁 公平锁 读写锁、CLH队列、CLH队列锁、自旋锁、排队自旋锁、MCS锁、CLH锁

    1.可重入锁 如果锁具备可重入性,则称作为可重入锁. ========================================== (转)可重入和不可重入 2011-10-04 21:38 这 ...

  5. hdu 1872(看病要排队)(优先队列)

    看病要排队 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  6. 赴美工作常识(Part 6 - 绿卡排队)

    上一篇<赴美工作常识(Part 5 - 绿卡优先级)>解释完排队的优先级是怎么确定的,以及 PERM 和 I–140 表的意义,接下来就要解释一下队具体是怎么排的以及排到之后的 I–485 ...

  7. hdu 1873 看病要排队(优先级队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1873 题目大意: 三个医生看病,病人排队看病,病人有优先级,优先级高的提前看病,同样的优先级按先后.I ...

  8. 排队打饭 sdut 2443【最简单的贪心法应用举例】

    排队打饭 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...

  9. tomcat的maxThreads、acceptCount(最大线程数、最大排队数)

    转载:http://blog.sina.com.cn/s/blog_605f5b4f01012ljj.html tomcat 的Connector配置如下 <Connector port=&qu ...

  10. Java核心知识点学习----线程中的Semaphore学习,公共厕所排队策略

    1.什么是Semaphore? A counting semaphore. Conceptually, a semaphore maintains a set of permits. Each acq ...

随机推荐

  1. springgateway 路由转发

    有些情况下,我们希望不直接访问后端地址,这个时候可以通过springgateway网关进行处理.下面只是一个简单的例子. 至于URL,变化,我们可以通过编写程序逻辑来实现. 实现步骤: 1.新建项目 ...

  2. Vue项目报TypeError: Cannot read properties of undefined (reading '_wrapper')

    前情 最近在做一个营销活动的时候,我选择了Vue技术栈来开发. 坑位 项目看似一切都正常,但当我在绑定的js事件中去修改当前组件的data上的值时会报错:TypeError: Cannot read ...

  3. 【双堆懒删除】codeforces 1294 D. MEX maximizing

    前言 双堆懒删除 当需要维护若干元素中的最大值(或最小值)时,可以用一个堆维护,但是堆只擅长处理堆顶元素,对堆中任意元素的处理就束手无策了.此时,可以引入另外一个堆,我们定义原来的堆为保存堆 \(ex ...

  4. Electron 窗体 BrowserWindow

    http://jsrun.net/t/KfkKp https://www.wenjiangs.com/doc/tlsizw1dst https://www.w3cschool.cn/electronm ...

  5. Nuget Reference 丢失问题

    现象 在 Visual Studio 2017 中创建一个控制台项目.创建出来的项目如下所示. 通过 NuGet 管理器,添加 Newtonsoft.Json 的 NuGet 包,安装之后,项目中添加 ...

  6. 【MySQL】MySQL命令总结 | 数据库与数据表的创建删除与查询

    @ 目录 数据库 创建数据库 使用数据库 删除数据库 查看所有数据库 数据表 查看数据库中所有数据表 在数据库中创建数据表 删除数据表 修改表名 查询表列(字段)信息 表-删除某一字段 表-增加某一字 ...

  7. 离线yum安装k8s(直接yum安装k8s)快速部署

    问题:如何在没有离线环境上服务器yum安装k8s环境? 环境:准备一台互联网的服务器+离线的服务器 写的比较简便........ 1.互联网服务操作添加阿里云YUM的软件源 cat > /etc ...

  8. 龙哥量化:期货软件中红红绿绿的"多开,空开,空平,多平,多换,空换,双开,双平,换手"是什么意思?(转载的)

    期货投资者在看盘时,会看到红红绿绿的"多开,空开,空平,多平,多换,空换,双开,双平,换手",以快期专业版为例,如下图1所示: 图1.红绿开平数据(快期专业版) 这些数据里面的红色 ...

  9. MySQL数据库建库时SQL语句中数据库名、表名用引号的问题以及COLLATE utf8_general_ci的含义

    一.MySQL数据库建库时SQL语句中数据库名.表名用引号的问题解释:在创建MySQL数据库和表时,数据库名.表名和字段名外面的符号 ` 不是单引号,而是英文输入法的反单引号,同键盘~同一位置.为了避 ...

  10. 跟着源码学IM(八):万字长文,手把手教你用Netty打造IM聊天

    本文作者芋艿,原题"使用 Netty 实现 IM 聊天贼简单",本底价有修订和改动. 一.本文引言 上篇<跟着源码学IM(七):手把手教你用WebSocket打造Web端IM ...