#P11843. [USACO25FEB] The Best Subsequence G

[USACO25FEB] The Best Subsequence G

题目描述

Farmer John 有一个长为 NN 的位串(1N1091 \leq N \leq 10^9),初始时全部为零。

他将首先按顺序对字符串执行 MM 次更新(1M21051 \leq M \leq 2 \cdot 10^5)。每次更新会翻转从 llrr 的每个字符。具体地说,翻转一个字符会将其从 00 变为 11,或反之。

然后,他会进行 QQ 次查询(1Q21051 \leq Q \leq 2 \cdot 10^5)。对于每个查询,他要求你输出由从 llrr 的子串中的字符组成的长为 kk 的字典序最大子序列。如果你的答案是一个位串 s1s2sks_1s_2 \dots s_k,则输出 i=0k12iski\sum_{i=0}^{k-1} 2^i \cdot s_{k-i}(即将其解释为二进制数时的值)模 109+710^9+7 的余数。

一个字符串的子序列是可以从中通过删除一些或不删除字符而不改变余下字符的顺序得到的字符串。

我们知道,字符串 AA 的字典序大于长度相等的字符串 BB,当且仅当在第一个 AiBiA_i \neq B_i 的位置 ii 上(如果存在),我们有 Ai>BiA_i > B_i

输入格式

输入的第一行包含 NNMMQQ

以下 MM 行,每行包含两个整数 llrr1lrN1 \leq l \leq r \leq N),为每次更新的端点。

以下 QQ 行,每行包含三个整数 llrrkk1lrN1 \leq l \leq r \leq N1krl+11 \leq k \leq r - l + 1),为每个查询的端点和子序列的长度。

输出格式

输出 QQ 行。第 ii 行包含第 ii 个查询的答案。

5 3 9
1 5
2 4
3 3
1 5 5
1 5 4
1 5 3
1 5 2
1 5 1
2 5 4
2 5 3
2 5 2
2 5 1
21
13
7
3
1
5
5
3
1
9 1 1
7 9
1 8 8

3
30 1 1
1 30
1 30 30
73741816

提示

样例 1 解释:

在执行 MM 次操作后,位串为 1010110101

对于第一个查询,长度为 55 的子序列仅有一个,1010110101,其解释为 $1 \cdot 2^4 + 0 \cdot 2^3 + 1 \cdot 2^2 + 0 \cdot 2^1 + 1 \cdot 2^0 = 21$。

对于第二个查询,长度为 44 的不同的子序列有 55 个:0101010111011101100110011011101110101010。字典序最大的子序列为 11011101,其解释为 $1 \cdot 2^3 + 1 \cdot 2^2 + 0 \cdot 2^1 + 1\cdot 2^0 = 13$。

对于第三个查询,字典序最大的序列是 111111,其解释为 77

样例 3 解释:

确保输出答案对 109+710^9+7 取模。

  • 测试点 44N10,Q1000N \leq 10, Q \leq 1000
  • 测试点 55M10M \leq 10
  • 测试点 676\sim 7N,Q1000N, Q \leq 1000
  • 测试点 8128\sim 12N2105N \leq 2 \cdot 10^5
  • 测试点 132013\sim 20:没有额外限制。