P2650 弹幕考察 题解

P2650 弹幕考察 题解

P2650 弹幕考察 题解

题目链接

本人博客

前言

做法1:树状数组

做法2:二分

以上两个做法在本篇题解中均会涉及。

笔者一拿到这个题,就想到了用数据结构维护一个查询区间内原区间的个数。再一看是明显是离线查询,故想到了树状数组。打完之后点开标签,发现竟然有二分的标签,于是看了题解,才恍然大悟,发现原来这个题原来可以这么简单。

做法1:树状数组

从后往前维护树状数组,统计答案。

注意到数据,发现没有办法维护如此之巨大的树状数组,怎么办?

答案就是-离散化!

\(\color{red}{\text{注意:离散化后数组大小一定想好要开多大!}}\) 笔者就是这里被卡了 \(5\) 发。

代码

#include<cstdio>
#include<iostream> 
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define int long long 
inline int Read(){int x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}while(isdigit(c)){x=x*10+c-48;c=getchar();}return x*f;
}
inline void Write(int x){if(x<0){x=-x;putchar('-');}if(x>9) Write(x/10);putchar(x%10+'0');
}
const int N=1e6+10;
int n,m,rr;
//rr:统计离散化后最右边的数字
int li[N],totl=0;
int ans[N];
struct node{int l,r,id;
}a[N],q[N]; 
//a:原区间,q:查询区间
bool cmp1(node A,node B){return A.r>B.r;}
bool cmp2(node A,node B){return A.l>B.l;}
//树状数组板子
int c[N*5];
int lowbit(int x){return x&(-x);
}
void change(int pos,int v){while(pos<=rr){c[pos]+=v;pos+=lowbit(pos);}
}
int query(int pos){int res=0;while(pos){res+=c[pos];pos-=lowbit(pos);}return res;
}
signed main(){n=Read();m=Read();for(int i=1;i<=n;i++){a[i].l=Read()+1,a[i].r=Read()+a[i].l;li[++totl]=a[i].l,li[++totl]=a[i].r;}for(int i=1;i<=m;i++){q[i].l=Read()+1,q[i].r=Read()+q[i].l;li[++totl]=q[i].l,li[++totl]=q[i].r;q[i].id=i;}//离散化sort(li+1,li+totl+1);int cnt=unique(li+1,li+totl+1)-(li+1);for(int i=1;i<=n;i++) {a[i].l=lower_bound(li+1,li+cnt+1,a[i].l)-li;a[i].r=lower_bound(li+1,li+cnt+1,a[i].r)-li;rr=max(rr,a[i].r);}for(int i=1;i<=m;i++){q[i].l=lower_bound(li+1,li+cnt+1,q[i].l)-li;q[i].r=lower_bound(li+1,li+cnt+1,q[i].r)-li;rr=max(rr,q[i].r);}sort(a+1,a+n+1,cmp1);sort(q+1,q+m+1,cmp2);int j=1;for(int i=1;i<=m;i++){while(a[j].r>q[i].l) {change(a[j].l,1);j++;}ans[q[i].id]=query(q[i].r-1);}for(int i=1;i<=m;i++) printf("%lld\n",ans[i]);return 0; 
}

做法2:二分

考虑什么时候原区间对查询区间有贡献。

设原区间为 \([x,y]\),查询区间为 \([l,r]\)

\(y < l\) 或者 \(x > r\) 的时候原区间不在查询区间的覆盖范围内,此时无贡献。如下图。

所以只需要统计查询区间右端点前原区间左端点的个数,减去查询区间左端点前原区间右端点的个数。

代码

#include<cstdio>
#include<iostream> 
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define int long long 
inline int Read(){int x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}while(isdigit(c)){x=x*10+c-48;c=getchar();}return x*f;
}
inline void Write(int x){if(x<0){x=-x;putchar('-');}if(x>9) Write(x/10);putchar(x%10+'0');
}
const int N=1e5+10;
int n,m,l[N],r[N];
signed main(){n=Read();m=Read();for(int i=1;i<=n;i++){l[i]=Read(),r[i]=Read()+l[i]-1;//注意这里是左闭右开}sort(l+1,l+n+1);sort(r+1,r+n+1);//二分需要满足单调性for(int i=1;i<=m;i++){int x=Read(),y=Read()+x;int ans=lower_bound(l+1,l+n+1,y)-(l+1);ans-=lower_bound(r+1,r+n+1,x)-(r+1);printf("%lld\n",ans);}return 0; 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/954787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025防火/模压/瓦楞/大跨距/热镀锌/热浸锌/不锈钢/光伏/铝合金/锌铝镁/电缆桥架推荐榜:百著金属以全场景防护领跑,四家企业凭细分优势突围

2025年,随着建筑防火标准升级与新能源基建提速,防火电缆桥架作为电缆安全防护的核心载体,市场需求持续扩容。据中国建筑金属结构协会数据,工业厂房、新能源电站、市政工程等领域需求同比增长均超 30%,“防火等级达…

视频工具FFmpeg

目录官网地址详细操作 官网地址 https://ffmpeg.org/ 详细操作 https://blog.csdn.net/Natsuago/article/details/143231558

低代码如何打破企业数字化转型的 “人才瓶颈”?

在数字化转型的赛道上,“缺技术人才” 是很多企业的共同痛点。大型企业尚且面临高级开发工程师供不应求的问题,中小微企业更是陷入 “招不到、留不住、养不起” 的困境 —— 想搭建一套贴合业务的管理系统,要么因缺…

Odoo中的消费税处理方案

首先我们来明确消费税的定义, 消费税(Excise Duty)是对特定消费品(如烟草、酒类、燃油、奢侈品)在生产或进口环节征收的间接税。 在其他国家(如美国、澳大利亚、欧盟),消费税常被称为:英文名称中文含义说明Excis…

2025河北小型新中式全屋定制,意式全屋定制,意式极简全屋定制,全屋定制厂家精选:尚品金马装饰,本土实力品牌值得关注

在全屋定制行业中,除了知名大品牌,一批规模适中的本土小型厂家凭借精准的设计、扎实的品质和贴心的服务,成为不少消费者的务实之选。以下为大家整理了河北地区几家口碑不错的小型全屋定制厂家,涵盖不同城市的特色品…

2025年常州流化床干燥机厂家盘点:聚焦中小规模企业的专业之选

在工业生产中,流化床干燥机凭借高效节能、干燥均匀的优势,成为化工、制药、食品等领域的关键设备。常州作为国内干燥设备产业的重要聚集地,涌现出众多深耕技术的中小规模厂家。以下结合设备性能、行业适配性与服务口…

Java数组——数组定义、声明、创建

Java数组——数组定义、声明、创建数组的定义 数组是相同类型数据的有序集合 数组描述的是相同类型的若干数据,按照一定先后次序排列组合而得 每一个数据称为一个数组元素,每个数组元素可以通过一个下标进行访问 数组…

2025年11月冷作模具钢,塑胶模具钢,进口模具钢,模具钢厂家推荐榜:聚焦焰特尔技术实力与品质管控!

在苏州模具钢行业中,一批规模适中的企业凭借专注的经营理念、扎实的产品品质和灵活的服务模式,成为市场上颇具性价比的选择。以下结合企业经营特色与行业口碑,优质小型模具钢厂家推荐,供相关需求方参考: 一、【推…

2025常州小型桨叶干燥机,闪蒸干燥机,流化床干燥机,喷雾干燥机厂家盘点:瑞德干燥,聚焦细分需求的务实之选

作为国内干燥设备产业的核心集聚区,常州素有 “中国干燥设备之乡” 的美誉,这里聚集了超 500 家干燥设备及配套企业,年产值规模超 100 亿元,国内市场占有率约 60%,在喷雾干燥机等细分领域形成了显著的产业优势。依…

2025年闪蒸干燥机厂家推荐:常州高性价比闪蒸干燥机企业盘点

作为国内干燥设备产业的核心集聚区,常州素有 “中国干燥设备之乡” 的美誉,这里汇聚了超 500 家干燥设备及配套企业,年产值规模超 100 亿元,国内市场占有率约 60%,在闪蒸干燥机等细分领域更是形成了成熟的产业生态…

2025年苏州竞速无人机电机,安防无人机电机,电机厂家精选榜单:睿创电子,优质企业值得关注

在苏州的电机制造领域,除了规模较大的行业龙头,一批中小型电机厂家凭借专注的技术研发、精准的市场定位和稳定的产品品质,在细分领域占据重要地位。规模适中的优质电机厂家榜单,涵盖不同应用场景与技术方向,供相关…

2025年闪蒸干燥机厂家推荐清单:聚焦细分领域的 专而精 之选

在化工、食品、医药等行业的物料干燥环节中,闪蒸干燥机凭借高效节能、适配性强的优势成为核心设备。对于寻求高性价比与精准服务的企业而言,中小规模厂家往往能以更灵活的方案满足细分需求。以下结合技术适配性、服务…

2025实用铁氟龙高温线,硅胶高温线,高压高温线,高温线厂家推荐:申远高温线,聚焦细分领域的靠谱选择

在新能源、工业制造、电子设备等领域的严苛环境中,高温线的耐温稳定性与绝缘可靠性直接关系到设备运行安全。经过对行业口碑、技术实力与场景适配性的综合梳理,专注高温线领域的厂家凭借各自优势脱颖而出,涵盖不同规…

uni-app x开发商城系统,资讯列表结构,数据渲染,news-item组件封装

一、概述 上一篇文章,已经实现了社区图片右侧数据渲染,预览图片。 接下来,实现资讯列表结构,数据渲染,news-item组件封装 效果如下:二、资讯列表结构 修改 pages/news/news.uvue文件,固定一行数据 完整代码如下…

使用office tool plus 激活office

声明:笔者安装部署的版本为LSTC2024专业增强版基本的部署方案参考知乎 若只需要重新激活office,可参考使用Office Tool Plus再次激活 Office,在博文遇到“激活失败”问题的时候,参考如下解决方案 值得注意的是,如…

#课后作业1:课件动手动脑及验证内容解答 - 20243867孙堃2405

一、AboutException.java示例运行与异常处理基础验证代码示例(模拟) public class AboutException { public static void main(String[] args) { // 演示被0除异常 int i = 1, j = 0, k; try { k = i / j; // 可能抛…

智变未来:中国AI HR市场进程盘点与主流玩家深度分析

摘要:随着人工智能技术的飞速发展,全球人力资源管理领域正经历一场深刻的变革。本文将深度剖析AI在企业人力资源领域的发展与落地概况,聚焦中国AIHR市场的独特特征,并对主流玩家进行详细盘点。特别是对在中国AI HR…

PostgreSQL数据库:新手开启从0到1的学习之路

一、先了解一下PostgreSQL 是什么?PostgreSQL是一款遵循 SQL 标准的开源关系型数据库,起源于加州大学伯克利分校的研究项目。支持关系型数据、JSON/JSONB 非结构化数据、地理信息等多种数据类型,能满足从个人项目到…

2025电线电缆生产厂家,电线电缆厂家精选:武汉特航,赋能多行业的技术型品牌揭秘!

在电线电缆行业中,一批规模适中、专注细分领域的小型厂家凭借精准的市场定位、扎实的产品品质和灵活的服务模式,成为行业中值得关注的力量。以下结合产品合规性、技术适配性、市场口碑等维度,精选 武汉本地优质小型…

nfs 自动挂载的一些问题

nfs 自动挂载的一些问题在测试nfs 自动挂载的时候发现的一个问题,平时没太注意,先进行了不少nfs 挂载参数的调整尝试,依然不行,后边发现是可以开启 systemd-networkd-wait-online 或者NetworkManager-wait-online.…