#308. [CFCOI Collection 4] 最后的滑动窗口问题 2

[CFCOI Collection 4] 最后的滑动窗口问题 2

题目描述

对于一个序列 AA 和正整数 kk,定义 f(A,k)f(A,k) 为下面算法的输出:

算法流程

  • 初始化空序列 TT,计数器 m=0m=0。
  • 遍历 i=1,2,⋯ ,∣A∣i=1,2,\cdots,|A|:
    • 重复执行以下操作,直到 TT 为空或者 AT∣T∣<AiA_{T_{|T|}} < A_i:
      • 删除 TT 的末尾元素 T∣T∣T_{|T|}。
    • 重复执行以下操作,直到 TT 为空或者 T1>i−kT_1 > i-k:
      • 删除 TT 的开头元素 T1T_{1}。
    • 向 TT 的末尾加入 ii。
    • m←m+∣T∣m \gets m+|T|。
  • 输出 mm 的值。

给定一个序列 X=[X1,X2,⋯ ,Xn]X=[X_1,X_2,\cdots,X_n]。

现在有 qq 次询问,第 ii 次给定 li,ri,kil_i,r_i,k_i,请求出 f([Xli,Xli+1,⋯ ,Xri],ki)f([X_{l_i},X_{l_i+1},\cdots,X_{r_i}],k_i) 的值。

输入格式

第一行 22 个整数 n,qn,q。

第二行 nn 个整数 X1,X2,⋯ .XnX_1,X_2,\cdots.X_n。

接下来 qq 行,第 ii 行 33 个整数 li,ri,kil_i,r_i,k_i。

输出格式

设第 ii 次询问的答案为 fif_i。

由于一些特别的原因,请输出 ⨁i=1n(i2+fi)\displaystyle \bigoplus_{i=1}^{n} (i^2+f_i) 的值。

样例

4 2
4 1 3 2
1 2 1
1 4 4
9

说明/提示

对于 100%100\% 的数据:

  • 1≤n,q≤2×1051 \le n,q \le 2 \times 10^5;
  • XX 为 1∼n1 \sim n 的排列;
  • 1≤li≤ri≤n,1≤ki≤n1 \le l_i \le r_i \le n,1 \le k_i \le n。

本题开启捆绑测试。

  • Subtask #1(10 pts10 \ \text{pts}):n,q≤3000n,q \le 3000。
  • Subtask #2(5 pts5 \ \text{pts}):ki=1k_i=1。
  • Subtask #3(5 pts5 \ \text{pts}):ki=2k_i=2。
  • Subtask #4(5 pts5 \ \text{pts}):Xi=iX_i=i。
  • Subtask #5(5 pts5 \ \text{pts}):Xi=n−i+1X_i=n-i+1。
  • Subtask #6(10 pts10 \ \text{pts}):n≤3000n \le 3000。
  • Subtask #7(15 pts15 \ \text{pts}):每次询问 ri=nr_i=n。
  • Subtask #8(15 pts15 \ \text{pts}):ki≥ri−li+1k_i \ge r_i-l_i+1。
  • Subtask #9(10 pts10 \ \text{pts}):∣Xi−i∣≤3|X_i-i| \le 3。
  • Subtask #10(20 pts20 \ \text{pts}):无特殊限制。