弹幕查找(学习题解笔记)

题目描述

zeromaker 对弹幕的视野控制有着深刻的研究。 每个弹幕在一段特定的时间内会出现在 zeromaker 的视野内,除此之外的时间都在 zeromaker 看不到的地方。在 zeromaker 看来,视野内的弹幕数量越多,图就越难,因为这意味着 @#¥%。 现在,zeromaker 想要评测这张图的难度,他已经知道了每个弹幕会在什么时候出现在视野内,他想知道,在一段时间内,总共有多少个弹幕出现在他的视野内过。

输入格式

第一行有两个整数 n , m ,表示一共有 n 个弹幕,而 zeromaker 有 m 个问题。

接下来 n 行,每行两个数 a,b,表示这个弹幕 a 秒时出现在 zeromaker 的视野内,出现了 b 秒。 接下来 m 行,每行两个整数 x , y ,表示从 x 秒开始,经过 y 秒,其中有多少个弹幕出现过。

注意:查询区间为左闭右闭,弹幕出现区间为左开右开。

输出格式

m 行,即对于 zeromaker 提出的每个问题的答案。

 

 

 

 

 

 

 

#include <bits/stdc++.h>
using namespace std;
int main()
{
int l[100001],r[100001];
int n,m;
long long l_problem,r_problem;
int ans;
cin>>n>>m;

for(int i=1;i<=n;i++)
{
cin>>l[i]>>r[i];
r[i]=l[i]+r[i]-1;
}

sort(l+1,l+1+n);
sort(r+1,r+1+n);

for(int i=1;i<=m;i++)
{
cin>>l_problem>>r_problem;
r_problem+=l_problem;
//ans=lower_bound(l+1,l+1+n,r_problem);
//ans-=lower_bound(l+1,l+1+n,l_problem)

ans=lower_bound(l+1,l+1+n,r_problem)-l;
ans-=lower_bound(l+1,l+1+n,l_problem)-l;
//ans-=lower_bound(r+1,r+1+n,l_problem)-r;
cout<<ans<<endl;
}
return 0;
}

posted @ 2022-05-03 16:05  不周山猫猫  阅读(110)  评论(0编辑  收藏  举报