思路:用差分来维护每种温度被食谱的认可度,再用前缀和处理询问(本来以为要用线段树维护,后来发现询问都在最后,于是写的差分)。
有关差分的介绍请看这里:差分数组&树上差分
前缀和不用多讲了吧
最后是代码:
#include<iostream>
using namespace std;
int a[200005],b[200005],sum[200005];
int main()
{
int n,k,q,l,r;
cin>>n>>k>>q;
for(int i=0;i<n;i++)
{
cin>>l>>r;
b[l]++;
b[r+1]--;
}//差分
int sum1=0,sum2=0;
for(int i=1;i<=200000;i++)
{
sum1+=b[i];
a[i]=sum1;
if(a[i]>=k)
sum2++;
sum[i]=sum2;
}//计算前缀和
for(int i=0;i<q;i++)
{
cin>>l>>r;
cout<<sum[r]-sum[l-1]<<endl;
}//处理询问
return 0;
}