题目描述
题目译自 XXXI Olimpiada Informatyczna – II etap Ciąg binarny
Bajtocy 是二进制序列的狂热爱好者。对于给定的二进制序列 a1,a2,…,as 和非负整数 k,其 k-近似序列定义为任意二进制序列 b1,b2,…,bs,满足以下条件:
- 0≤bi≤ai≤1 对于 1≤i≤s;
- 位置 1≤i≤s−1 处 bi=bi+1 的数量不超过 k;
- 序列和 b1+b2+…+bs 尽可能大。
Bajtocy 拥有一个心爱的二进制序列 x1,x2,…,xS。由于序列可能极长,采用压缩形式输入:由 n 个正整数 d1,d2,…,dn 表示,序列从 d1 个 1 开始,接着 d2 个 0,d3 个 1,依此类推,形式为 1d10d21d3…。
你的任务是帮助 Bajtocy 计算其心爱序列某些连续片段的 k-近似序列和。具体为,回答 q 次查询,每查询包含整数 k 和两个整数 l,r,需计算序列 xl,xl+1,…,xr 的 k-近似序列和。
输入格式
第一行包含两个整数 n,q (1≤n,q≤1000000),分别表示序列压缩描述的长度和查询次数。
第二行包含 n 个正整数 d1,d2,…,dn (1≤S≤109,S=d1+d2+…+dn),表示序列中各块的长度。
接下来的 q 行,每行包含三个整数 li,ri,ki (1≤li≤ri≤S,0≤ki≤109),表示查询序列 xli,xli+1,…,xri 的 ki-近似序列和。
输出格式
输出 q 行,第 i 行包含一个整数,表示序列 xli,xli+1,…,xri 的 ki-近似序列和。
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,1,共 5 次查询:
- 查询 1:2-近似序列,片段 1,0,1,1,其本身为 2-近似序列,和为 3。
- 查询 2:3-近似序列,同一片段 1,0,1,1,亦为其 3-近似序列,和为 3。
- 查询 3:0-近似序列,片段 0,1,1,0,1,0-近似为常序列 0,0,0,0,0,和为 0。
- 查询 4:2-近似序列,整个序列 1,0,1,1,0,1,1,2-近似为 1,0,0,0,0,1,1,和为 3。
- 查询 5:1-近似序列,片段 1,1,0,1,1,可能 1-近似为 1,1,0,0,0 或 0,0,0,1,1,均和为 2。
附加样例
- n=3,S=9,q=450,查询覆盖每个区间和 k 从 0 到 9。
- n=5,S=500,q=500,li=1,ri=i,ki=2 对于 1≤i≤q,块长度为 2,1,1,1,495,答案依次为 1,2,2,3,2,3,4,5,6,7,8,…。
- n=500,q=500,li=i,ri=i+9,ki=3 对于 1≤i≤q,块长度为 3,2,3,2,…,答案依次为 6,5,5,6,3,6,5,5,6,3,…。
- n=104,S=109,q=104,li=1,ri=109,ki=109 对于 1≤i≤q,答案为 987654321。
- n=106,q=106,ri−li≤10 对于 1≤i≤q。
数据范围与提示
详细子任务附加限制及分值如下表所示。
| 子任务编号 |
附加限制 |
分值 |
| 1 |
q≤10,S≤20 |
4 |
| 2 |
q≤500,S≤500 |
7 |
| 3 |
q≤105,S≤500 |
4 |
| 4 |
q≤500,n≤500 |
9 |
| 5 |
q≤5000,n≤5000 |
14 |
| 6 |
q≤104,n≤104 |
15 |
| 7 |
q≤105,S≤105 |
20 |
| 8 |
q≤106,S≤105 |
7 |
| 9 |
无附加限制 |
20 |