#P11947. [KTSC 2025] 可爱区间 / maxsum

[KTSC 2025] 可爱区间 / maxsum

题目背景

版权信息:译自 2025年度 国际情报 올림피아드 (Olympiad) 代表学生 选拔考试 R2T2。[CC BY-NC-SA 4.0]

题目描述

给定长度为 nn 的整数数列 A0An1A_0\sim A_{n-1}B0Bn1B_0\sim B_{n-1}。保证 AiBiA_i\le B_i

定义区间 [l,r][l,r]可爱的,当且仅当:

  • l,rZl,r\in \mathbb{Z},且 0lr<n0\le l\le r\lt n
  • 存在一个长度为 nn 的整数数列 C0Cn1C_0\sim C_{n-1},使得:
    1. 0i<n\forall 0\le i\lt n,都有 Ci[Ai,Bi]C_i\in [A_i,B_i]
    2. 0LR<n\forall 0\le L\le R\lt n,都有 $\displaystyle \sum_{L\le i\le R} C_i\le \sum_{l\le i\le r} C_i$。
      • 换言之,[l,r][l,r] 取到 CC 的最大子段和。

qq 次询问,第 ii 次询问给定四个非负整数 L1,i,R1,i,L2,i,R2,iL_{1,i},R_{1,i},L_{2,i},R_{2,i},求出满足以下条件的区间 [l,r][l,r] 的数量:

  • l[L1,i,R1,i]l\in [L_{1,i},R_{1,i}]
  • r[L2,i,R2,i]r\in [L_{2,i},R_{2,i}]
  • [l,r][l,r] 是可爱的。

实现细节

你不需要,也不应该实现 main 函数。

你应当实现以下的函数:

vector<long long> maxsum(vector<int> A, vector<int> B, 
                         vector<int> L1, vector<int> R1,  
                         vector<int> L2, vector<int> R2);  
  • AB:长度为 nn 的整数数组;
  • L1R1L2R2:长度为 qq 的非负整数数组。
    • 0i<q\forall 0\le i\lt qL1[i],R1[i],L2[i],R2[i] 描述一次询问。
  • 返回一个长度为 qq 的非负整数数组 S,其中 S[i] 表示第 ii 个询问的答案。

输入格式

Sample Grader 输入格式如下:

第一行,两个正整数 n,qn,q

接下来 nn 行,每行两个整数 Ai,BiA_i,B_i

接下来 qq 行,第 ii 行四个非负整数 L1,i,R1,i,L2,i,R2,iL_{1,i},R_{1,i},L_{2,i},R_{2,i}

输出格式

Sample Grader 输出一行 qq 个整数 S[0], S[1], ..., S[Q−1]

3 3
-1 2
-1 -1
-1 2
0 2 0 2
0 0 0 2
1 2 0 1
4 2 1

提示

样例交互

样例交互 11

  • N=3N=3, Q=3Q=3A=[1,1,1]A = [-1, -1, -1], B=[2,1,2]B = [2, -1, 2]
  • L1=[0,0,1]L_1 = [0, 0, 1]R1=[2,0,2]R_1 = [2, 0, 2]L2=[0,0,0]L_2 = [0, 0, 0]R2=[2,2,1]R_2 = [2, 2, 1]

交互库调用

maxsum([-1, -1, -1], [2, -1, 2], [0, 0, 1], [2, 0, 2], [0, 0, 0], [2, 2, 1]);
  • [0,0][0,0] 是可爱的。取 C=[1,1,0]C=[1,-1,0] 满足条件。
  • [0,1][0,1] 不是可爱的。由于 C1=1C_1=-1,无论其他位置填什么,都有 C0>C0+C1C_0\gt C_0+C_1

类似地,可以证明:只有 [0,0],[0,2],[1,1],[2,2][0, 0],[0, 2],[1, 1],[2, 2] 是可爱的区间。

返回 [4,2,1][4, 2, 1]

数据范围

  • 1n,q2500001 \leq n, q \leq 250\,000
  • 109AiBi109-10^9 \leq A_i \leq B_i \leq 10^9
  • 0L1,jR1,jN10 \leq L_{1,j} \leq R_{1,j} \leq N−1
  • 0L2,jR2,jN10 \leq L_{2,j} \leq R_{2,j} \leq N−1

子任务

  • Subtask 1 (5 pts)\text{Subtask 1 (5 pts)}n500n\le 500
  • Subtask 2 (11 pts)\text{Subtask 2 (11 pts)}n5000n\le 5\, 000
  • Subtask 3 (45 pts)\text{Subtask 3 (45 pts)}q=1q=1L1,0=L2,0=0L_{1,0}=L_{2,0}=0R1,0=R2,0=n1R_{1,0}=R_{2,0}=n-1
  • Subtask 4 (12 pts)\text{Subtask 4 (12 pts)}L1,i=R1,iL_{1,i}=R_{1,i}L2,i=R2,iL_{2,i}=R_{2,i}
  • Subtask 5 (27 pts)\text{Subtask 5 (27 pts)}:无额外限制。