Subsequence Count
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 256000/256000 K (Java/Others)Total Submission(s): 0 Accepted Submission(s): 0
Problem Description
Given a binary string
S[1,...,N]
(i.e. a sequence of 0's and 1's), and
Q
queries on the string.
There are two types of queries:
1. Flipping the bits (i.e., changing all 1 to 0 and 0 to 1) between l and r (inclusive).
2. Counting the number of distinct subsequences in the substring S[l,...,r] .
There are two types of queries:
1. Flipping the bits (i.e., changing all 1 to 0 and 0 to 1) between l and r (inclusive).
2. Counting the number of distinct subsequences in the substring S[l,...,r] .
Input
The first line contains an integer
T
, denoting the number of the test cases.
For each test, the first line contains two integers N and Q .
The second line contains the string S .
Then Q lines follow, each with three integers type , l and r , denoting the queries.
1≤T≤5
1≤N,Q≤105
S[i]∈{0,1},∀1≤i≤N
type∈{1,2}
1≤l≤r≤N
For each test, the first line contains two integers N and Q .
The second line contains the string S .
Then Q lines follow, each with three integers type , l and r , denoting the queries.
1≤T≤5
1≤N,Q≤105
S[i]∈{0,1},∀1≤i≤N
type∈{1,2}
1≤l≤r≤N
Output
For each query of type 2, output the answer mod (
109+7
) in one line.
Sample Input
2 4 4 1010 2 1 4 2 2 4 1 2 3 2 1 4 4 4 0000 1 1 2 1 2 3 1 3 4 2 1 4
Sample Output
11 6 8 10