#CF1946F. 不需要任何人

    ID: 1448 传统题 5000ms 512MiB 尝试: 1 已通过: 0 难度: 10 上传者: 标签>2500Codeforces树状数组动态规划离线处理

不需要任何人

不需要任何人

  • 时间限制:5 秒
  • 内存限制:512 MiB

题目描述

Oleg 收到了一份长度为 nn 的排列 aa 作为生日礼物。

Oleg 的朋友 Nechipor 向他提出了 qq 个询问。每个询问由两个整数 l,rl,r 表示。对于每个询问,你需要求出满足下列条件的下标序列 (t1,t2,…,tk)(t_1,t_2,\ldots,t_k) 的数量,其中 k≥1k\ge 1:

  • 对所有 1≤i≤k1\le i\le k,都有 l≤ti≤rl\le t_i\le r;
  • 对所有 1≤i<k1\le i<k,都有 ti<ti+1t_i<t_{i+1};
  • 对所有 1≤i<k1\le i<k,ati+1a_{t_{i+1}} 能被 atia_{t_i} 整除。

请回答所有询问。

输入格式

第一行包含一个整数 TT,表示测试用例数量。

对于每个测试用例:

  • 第一行包含两个整数 n,qn,q,分别表示排列长度和询问数量;
  • 第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n,它们构成 11 到 nn 的一个排列;
  • 接下来 qq 行,每行包含两个整数 l,rl,r,表示一个询问区间。

输出格式

对于每个测试用例,输出一行 qq 个整数,按输入顺序给出所有询问的答案。

样例输入

4
8 8
2 1 6 3 5 4 8 7
1 8
2 8
1 7
1 6
1 3
5 8
4 4
2 3
1 1
1
1 1
3 3
3 2 1
1 2
1 3
2 3
8 1
1 2 3 4 5 6 7 8
1 8

样例输出

20 15 18 12 5 5 1 3
1
2 3 2
27

数据范围

对于所有数据:

  • 1≤T≤1041\le T\le 10^4;
  • 1≤n,q≤1061\le n,q\le 10^6;
  • aa 是 11 到 nn 的一个排列;
  • 1≤l≤r≤n1\le l\le r\le n;
  • 所有测试用例的 nn 之和不超过 10610^6;
  • 所有测试用例的 qq 之和不超过 10610^6;
  • 答案使用 64 位有符号整数保存。

各子任务独立计分。

子任务编号 分值 特殊限制
1 30 T≤10T\le10,每个测试用例满足 n,q≤60n,q\le60,且 ∑n,∑q≤180\sum n,\sum q\le180
2 每个测试用例都满足 ai=n−i+1a_i=n-i+1
3 40 无特殊限制