传送门
思路:我们需要满足 x + y > z , x + z > y , y + z > x .因为 A <= X <=B <= Y <= C <= Z <= D,所以 X + Z > Y和 Y + Z > X明显一定满足,所以我们只需要确定X + Y > Z的个数了.X∈[A,B],Y∈[B,C],则我们发现若X = A,则 X + Y = [A + B, A + C], X = A + 1, X + Y = [A + B + 1, A + C + 1].可以看出这就是区间+1操作,这样我们只需要枚举X的取值范围得到一个[L,R],让该区间值+1,最后我们就可以得到X+Y=[A+B,B+C]中任意一个数值的方案数,然后得到一个前缀和数组P[i],表示X+Y=[1,i]的总方案数.这样我们只需要枚举Z∈[C,D],对于每个Z的答案就是P[B+C] - P[Z],当然如果当前的Z>=B+C需要考虑。而上面的区间+1操作可以用差分来解决,或者线段树也可以。复杂度就是O(N)。
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include