[QOJ8672][PKUSC2024] 排队
函数复合,直接转化为离线问题,那我们就需要完成对满足条件的量的区间加操作。
显然 \(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] 排队的更多相关文章
- C++ 事件驱动型银行排队模拟
最近重拾之前半途而废的C++,恰好看到了<C++ 实现银行排队服务模拟>,但是没有实验楼的会员,看不到具体的实现,正好用来作为练习. 模拟的是银行的排队叫号系统,所有顾客以先来后到的顺序在 ...
- bzoj 2729: [HNOI2012]排队
2729: [HNOI2012]排队 Time Limit: 10 Sec Memory Limit: 128 MB Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体 ...
- bzoj 2141: 排队
2141: 排队 Time Limit: 4 Sec Memory Limit: 259 MB Description 排排坐,吃果果,生果甜嗦嗦,大家笑呵呵.你一个,我一个,大的分给你,小的留给我, ...
- 可重入锁 公平锁 读写锁、CLH队列、CLH队列锁、自旋锁、排队自旋锁、MCS锁、CLH锁
1.可重入锁 如果锁具备可重入性,则称作为可重入锁. ========================================== (转)可重入和不可重入 2011-10-04 21:38 这 ...
- hdu 1872(看病要排队)(优先队列)
看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 赴美工作常识(Part 6 - 绿卡排队)
上一篇<赴美工作常识(Part 5 - 绿卡优先级)>解释完排队的优先级是怎么确定的,以及 PERM 和 I–140 表的意义,接下来就要解释一下队具体是怎么排的以及排到之后的 I–485 ...
- hdu 1873 看病要排队(优先级队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1873 题目大意: 三个医生看病,病人排队看病,病人有优先级,优先级高的提前看病,同样的优先级按先后.I ...
- 排队打饭 sdut 2443【最简单的贪心法应用举例】
排队打饭 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...
- tomcat的maxThreads、acceptCount(最大线程数、最大排队数)
转载:http://blog.sina.com.cn/s/blog_605f5b4f01012ljj.html tomcat 的Connector配置如下 <Connector port=&qu ...
- Java核心知识点学习----线程中的Semaphore学习,公共厕所排队策略
1.什么是Semaphore? A counting semaphore. Conceptually, a semaphore maintains a set of permits. Each acq ...
随机推荐
- 启动Node.js前端项目
跟前端同事联调的时候,有时前端同事要跟其他后端同事联调,心想就自己启个前端项目,这样前端同事跟其他后端同事联调的时候,我可以先自己调来试试. 安装Node.js,NPM,NVM等,一气呵成.将前端项目 ...
- Winform跨线程访问报错问题解决
` using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; u ...
- 对象存储COS成本优化方案
随着上云企业越来越多,企业对用云成本问题也越发重视.业务的发展会产生海量存储需求,在云端存储数据时,如何进行成本优化,减轻业务负担呢? 在进行成本优化之前,首先需要了解腾讯云对象存储COS的成本构成. ...
- Nginx基础使用
Nginx Nginx是一个WEB服务 [1].安装nginx 1.官网安装 2.使用默认的仓库安装,版本较低 3.编译方式安装,需要其他功能模块的时候 自定义安装 # 基于官网仓库的安装方式,版本较 ...
- 【NAS】绿联NAS+alist+lsky+natfrp 实现图床服务
alist 安装与配置 值得一提的就是,映射的data是配置相关的,让绿联直接默认路径就行,不需要手动设置 但是文件保存位置的映射的话,为了方便,可以单独映射到一个方便访问的文件夹,(但是要注意下权限 ...
- 【Vue】Vue脚手架安装搭建
## Vue脚手架安装搭建 操作系统:Windows 11 专业工作站 记录时间:2022年2月18日 在安装之前,需要安装node.js(Node.js (nodejs.org)),否则无法使用np ...
- 【Rive】眼睛互动动画
1 前言 本文基于 Rive 社区开放的眼睛动画,进一步加工处理,实现更有趣的眼睛互动动画. 原始资源见 → Eye Joysticks Demo,效果如下. 原始资源只有一只眼睛,并且没 ...
- APP网站小程序微信登录同步:需要微信公众号、小程序、开放平台打通用户体系(不同主体也行)
要想APP网站小程序微信登录同步打通用户体系.我们需要将(不同主体也行)多个公众号和小程序都绑定到同一个微信开放平台上,获取到UnionID记录到数据库就可以了. 微信UnionID 机制说明 如果开 ...
- Qt开发经验小技巧91-100
数据库处理一般建议在主线程,如果非要在其他线程,务必记得打开数据库也要在那个线程,即在那个线程使用数据库就在那个线程打开,不能打开数据库在主线程,执行sql在子线程,很可能出问题. 新版的QTcpSe ...
- 深度解析Mamba与状态空间模型:一图带你轻松入门
1.概述 Transformer架构无疑是大型语言模型(LLMs)成功背后的核心动力.从开源的Mistral到封闭的ChatGPT,几乎所有主流的LLM都在使用这一架构.然而,随着技术的不断进步,研究 ...