#HK4992. 「POI 2023/2024 R2」Ciąg binarny

「POI 2023/2024 R2」Ciąg binarny

题目描述

题目译自 XXXI Olimpiada Informatyczna – II etap Ciąg binarny

Bajtocy 是二进制序列的狂热爱好者。对于给定的二进制序列 a1,a2,…,asa_1, a_2, \ldots, a_s 和非负整数 kk,其 kk-近似序列定义为任意二进制序列 b1,b2,…,bsb_1, b_2, \ldots, b_s,满足以下条件:

  1. 0≤bi≤ai≤10 \leq b_i \leq a_i \leq 1 对于 1≤i≤s1 \leq i \leq s;
  2. 位置 1≤i≤s−11 \leq i \leq s-1 处 bi≠bi+1b_i \neq b_{i+1} 的数量不超过 kk;
  3. 序列和 b1+b2+…+bsb_1 + b_2 + \ldots + b_s 尽可能大。

Bajtocy 拥有一个心爱的二进制序列 x1,x2,…,xSx_1, x_2, \ldots, x_S。由于序列可能极长,采用压缩形式输入:由 nn 个正整数 d1,d2,…,dnd_1, d_2, \ldots, d_n 表示,序列从 d1d_1 个 11 开始,接着 d2d_2 个 00,d3d_3 个 11,依此类推,形式为 1d10d21d3…1^{d_1} 0^{d_2} 1^{d_3} \ldots。

你的任务是帮助 Bajtocy 计算其心爱序列某些连续片段的 kk-近似序列和。具体为,回答 qq 次查询,每查询包含整数 kk 和两个整数 l,rl, r,需计算序列 xl,xl+1,…,xrx_l, x_{l+1}, \ldots, x_r 的 kk-近似序列和。

输入格式

第一行包含两个整数 n,qn, q (1≤n,q≤1000000)(1 \leq n, q \leq 1000000),分别表示序列压缩描述的长度和查询次数。

第二行包含 nn 个正整数 d1,d2,…,dnd_1, d_2, \ldots, d_n (1≤S≤109,S=d1+d2+…+dn)(1 \leq S \leq 10^9, S = d_1 + d_2 + \ldots + d_n),表示序列中各块的长度。

接下来的 qq 行,每行包含三个整数 li,ri,kil_i, r_i, k_i (1≤li≤ri≤S,0≤ki≤109)(1 \leq l_i \leq r_i \leq S, 0 \leq k_i \leq 10^9),表示查询序列 xli,xli+1,…,xrix_{l_i}, x_{l_i+1}, \ldots, x_{r_i} 的 kik_i-近似序列和。

输出格式

输出 qq 行,第 ii 行包含一个整数,表示序列 xli,xli+1,…,xrix_{l_i}, x_{l_i+1}, \ldots, x_{r_i} 的 kik_i-近似序列和。

5 5
1 1 2 1 2
1 4 2
1 4 3
2 6 0
1 7 2
3 7 1

3
3
0
3
2

Bajtocy 的心爱序列为 1,0,1,1,0,1,11, 0, 1, 1, 0, 1, 1,共 55 次查询:

  1. 查询 11:22-近似序列,片段 1,0,1,11, 0, 1, 1,其本身为 22-近似序列,和为 33。
  2. 查询 22:33-近似序列,同一片段 1,0,1,11, 0, 1, 1,亦为其 33-近似序列,和为 33。
  3. 查询 33:00-近似序列,片段 0,1,1,0,10, 1, 1, 0, 1,00-近似为常序列 0,0,0,0,00, 0, 0, 0, 0,和为 00。
  4. 查询 44:22-近似序列,整个序列 1,0,1,1,0,1,11, 0, 1, 1, 0, 1, 1,22-近似为 1,0,0,0,0,1,11, 0, 0, 0, 0, 1, 1,和为 33。
  5. 查询 55:11-近似序列,片段 1,1,0,1,11, 1, 0, 1, 1,可能 11-近似为 1,1,0,0,01, 1, 0, 0, 0 或 0,0,0,1,10, 0, 0, 1, 1,均和为 22。

附加样例

  1. n=3,S=9,q=450n=3, S=9, q=450,查询覆盖每个区间和 kk 从 00 到 99。
  2. n=5,S=500,q=500n=5, S=500, q=500,li=1,ri=i,ki=2l_i = 1, r_i = i, k_i = 2 对于 1≤i≤q1 \leq i \leq q,块长度为 2,1,1,1,4952, 1, 1, 1, 495,答案依次为 1,2,2,3,2,3,4,5,6,7,8,…1, 2, 2, 3, 2, 3, 4, 5, 6, 7, 8, \ldots。
  3. n=500,q=500n=500, q=500,li=i,ri=i+9,ki=3l_i = i, r_i = i+9, k_i = 3 对于 1≤i≤q1 \leq i \leq q,块长度为 3,2,3,2,…3, 2, 3, 2, \ldots,答案依次为 6,5,5,6,3,6,5,5,6,3,…6, 5, 5, 6, 3, 6, 5, 5, 6, 3, \ldots。
  4. n=104,S=109,q=104n=10^4, S=10^9, q=10^4,li=1,ri=109,ki=109l_i = 1, r_i = 10^9, k_i = 10^9 对于 1≤i≤q1 \leq i \leq q,答案为 987654321987654321。
  5. n=106,q=106n=10^6, q=10^6,ri−li≤10r_i - l_i \leq 10 对于 1≤i≤q1 \leq i \leq q。

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务编号 附加限制 分值
11 q≤10,S≤20q \leq 10, S \leq 20 44
22 q≤500,S≤500q \leq 500, S \leq 500 77
33 q≤105,S≤500q \leq 10^5, S \leq 500 44
44 q≤500,n≤500q \leq 500, n \leq 500 99
55 q≤5000,n≤5000q \leq 5000, n \leq 5000 1414
66 q≤104,n≤104q \leq 10^4, n \leq 10^4 1515
77 q≤105,S≤105q \leq 10^5, S \leq 10^5 2020
88 q≤106,S≤105q \leq 10^6, S \leq 10^5 77
99 无附加限制 2020