3411: 破解
内存限制:512 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:23
解决:9
题目描述
历经千辛万苦,ddddddpppppp 终于找到了 IBN5100。
dp 事先了解到 SERN 共有T个密码,每个密码是一个长度为N的01串,他要利用 IBN5100 的特殊功能破解 SERN 的密码。
初始时,IBN5100 中的串每个位置都是0。
这台特殊的 IBN5100 还提供了M个区间 [Li,Ri],每次操作是从给定区间中选择其中一个区间 [Li,Ri],将当前01串 [Li,Ri] 的位置上的数字全部取反。
dp可以执行上述操作任意次。为了破解出密码,dp想知道这个01串最多有多少种可能。
由于答案可能很大,所以你只需要告诉 dp 模 (10^9+7)
后的答案即可。
注意:每次破解都是独立的。
输入
第一行,一个整数T表示一共T组数据。
每组数据第一行, 两个整数 N, M,分别表示密码串长度和区间个数。
接下来M行, 第i行两个整数 Li, Ri 表示一个区间 [Li,Ri]。
输出
每组数据一行,一个整数表示所有的可能,答案对 (10^9+7)
取模。
样例输入 复制
2
3 3
1 1
2 2
3 3
5 2
1 2
4 5
样例输出 复制
8 4
提示
第一组数据:每个位置都可以单个修改,所以所有长度为3的01串都有可能,即 2^3=8 种可能。
第二组数据的四种可能如下:
1. 不操作: 00000
2. 选择区间 [1,2]: 11000
3. 选择区间 [4,5]: 00011
4. 先选择区间 [1,2] 再选择 [4,5]: 11011
【数据范围】
对于30%的数据,N,M ≤ 10
对于60%的数据,N ≤ 10000000 , M ≤ 20
对于100%的数据,N ≤ 10000000 , M ≤ 100000 ,1 ≤ Li ≤ Ri ≤ N , T ≤ 10