n种调料 温度区间 li-ri
查询 1杯咖啡有个温度区间【a,b】 只要该温度下加的调料>=k种
该温度下为1杯好的咖啡 求该温度区间下好咖啡的数量
(1 ≤ li ≤ ri ≤ 200000)
n, k (1 ≤ k ≤ n ≤ 200000)
(1 ≤ a ≤ b ≤ 200000)
输入
n,k,q
接下来n种调料的温度区间
接下来q次查询 咖啡的温度区间
3 2 4
91 94
92 97
97 99
92 94
93 97
95 96
90 100
输出该温度区间下符合题意的咖啡温度数量
需要>=k种合适温度调料
差分数组前缀和预处理1-2e5区间内不同种调料的数量
然后根据sum[i]>=k 统计满足条件温度的数量前缀和
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
typedef long long ll;
ll q,n,k,a[maxn],sum[maxn],l,r,cnt,num[maxn];
int main(){
cin>>n>>k>>q;
for(int i=1;i<=n;i++){
cin>>l>>r;
a[l]+=1;
a[r+1]-=1;
}
for(int i=1;i<=2e5;i++){
sum[i]=sum[i-1]+a[i]; //差分数组前缀和
}
for(int i=1;i<=2e5;i++){
if(sum[i]>=k){
num[i]=num[i-1]+1;
}
else
num[i]=num[i-1];
}
while(q--){
cin>>l>>r;
cout<<num[r]-num[l-1]<<endl;
}
return 0;
}
/*
3 2 4
91 94
92 97
97 99
1 2 2 2 1 1 2 1 1
*/