首先可以看出这是 l o g 2 log^2 log2的三维数点问题
然后你就T了
考虑两个区间A,B的情况有
1、A包含B
2、AB相交但不包含
3、B包含A
考虑第1种情况的区间长度大于B的长度
问题可以转化成查询B包含的区间中小于等于区间长度-小于K的数量
我们可以将询问和区间按区间长度排序
查询包含的区间数量是:
右 端 点 在 [ 1 , R ] − 左 端 点 在 [ 1 , L − 1 ] 的 数 量 右端点在[1,R]-左端点在[1,L-1]的数量 右端点在[1,R]−左端点在[1,L−1]的数量
这个可以用树状数组解决
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define dd c=getchar()
int read() {
int s=0,w=1;char c;