CFCF2170E.Binary Strings and Blocks

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

定义二进制串(仅由字符 00 和/或 11 组成的字符串)中的“块”为:一段由相同字符组成、且无法继续向左或向右扩展的连续子串。例如,在字符串 110001111110001111 中,有三个块:

  • 11(第 11 位到第 22 位);
  • 000(第 33 位到第 55 位);
  • 1111(第 66 位到第 99 位)。

例如,第 77 位到第 99 位的 111 不是一个块,因为可以向左扩展;第 11 位到第 55 位的 11000 不是块,因为其中包含了不同的字符。

我们称一个字符串为“美丽的”,如果存在一种方法,删除恰好一个块后,剩余部分的块数为奇数。例如:

  • 字符串 110001111110001111 是美丽的,因为可以去掉第 33 到第 55 位的块,剩下 111111111111,只有一个块;
  • 字符串 10101010 是美丽的,因为可以去掉第 11 位的块,得到 010010,共有三个块;
  • 字符串 00000000 不是美丽的,因为唯一能删除的块后字符串为空,块数为 00

现在给定一个整数 nnmm 个约束条件,第 ii 个约束用整数对 li,ril_i, r_i 描述。记字符串 ss 的第 ll 位到第 rr 位为 s[l:r]s[l:r],即 s[l:r]=slsl+1srs[l:r]=s_l s_{l+1} \dots s_r。你的任务是,统计长度为 nn 的二进制串 ss,满足:

  • 对于每个 ii1im1 \le i \le m),s[li:ri]s[l_i:r_i] 是美丽的。

输入格式

第一行一个整数 tt1t1041 \le t \le 10^4),表示测试用例个数。

每组测试的第一行包含两个整数 nnmm2n31052 \le n \le 3 \cdot 10^51m31051 \le m \le 3 \cdot 10^5),分别表示字符串长度和约束的数量。

接下来 mm 行,每行两个整数 li,ril_i, r_i1li<rin1 \le l_i < r_i \le n),表示第 ii 个约束的区间。

额外条件:

  • 所有测试用例中 nn 之和不超过 31053 \cdot 10^5
  • 所有测试用例中 mm 之和不超过 31053 \cdot 10^5

输出格式

对每组测试,输出一行一个整数,表示满足要求的字符串数。由于答案可能很大,输出结果对 998244353998244353 取模。

输入输出样例

  • 输入#1

    3
    4 3
    1 2
    2 3
    3 4
    4 2
    1 2
    3 4
    200 1
    13 37

    输出#1

    2
    4
    570529459

说明/提示

在题目的第一个例子中,满足条件的字符串有:1010 和 0101。对于这两个字符串,s[1:2]s[1:2]s[2:3]s[2:3]s[3:4]s[3:4] 都是美丽的。

首页