CFCF2146F.Bubble Sort

省选/NOI-

通过率:0%

AC君温馨提醒

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

题目描述

你刚刚学习了冒泡排序算法,它可以将一个数组按非降序排序。我们定义函数 sort(a)\text{sort}(a) 如下伪代码:

function sort(array a):
    rounds := 0
    n := length of a
    while a is not non-decreasing:
        rounds := rounds + 1
        for i from 1 to n - 1:
            if a[i] > a[i + 1]:
                swap(a[i], a[i + 1])
    return rounds

如上所示,sort(a)\text{sort}(a) 的返回值表示通过冒泡排序将数组 aa 排序为非降序所需的轮数。

现给定一个整数 nn,以及 mm 个三元组 (ki,li,ri)(k_i, l_i, r_i)1im1 \le i \le m)。请统计满足以下限制条件的长度为 nn 的排列 pp 的个数,答案对 998244353998\,244\,353 取模:

  • 对于每个 1in1 \le i \le n,令 bi=sort([p1,p2,,pi])b_i = \text{sort}([p_1, p_2, \ldots, p_i])
  • 对于每个 1jm1 \le j \le m,令 xx 表示有多少个索引 yy1yn1 \le y \le n)满足 bykjb_y \le k_j,则一定有 ljxrjl_j \le x \le r_j

注:排列是长度为 nn 的数组,包含 11nn 的所有整数且互不重复。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,而 [1,2,2][1,2,2] 不是(22 出现了两次),[1,3,4][1,3,4] 也不是(n=3n=3,但包含 44)。

输入格式

每个测试点包含多组测试数据。第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试数据组数。

每组测试数据的第一行包含两个整数 nnmm2n1062 \le n \le 10^60m10000 \le m \le 1000)。

随后 mm 行,每行三个整数 ki,li,rik_i, l_i, r_i0kin10 \le k_i \le n-11lirin1 \le l_i \le r_i \le n),表示限制条件。

保证所有测试数据中 m2m^2 的总和不超过 10610^6

输出格式

对于每组测试数据,输出一个整数,表示满足条件的排列数,对 998244353998\,244\,353 取模。

输入输出样例

  • 输入#1

    6
    4 3
    0 1 1
    1 3 3
    2 4 4
    3 2
    0 3 3
    1 2 3
    4 3
    1 2 2
    2 3 4
    0 1 2
    5 3
    1 1 4
    3 5 5
    4 5 5
    10 5
    1 2 3
    2 3 4
    3 4 5
    4 5 6
    5 6 7
    1000000 0

    输出#1

    2
    1
    8
    80
    192600
    373341033

说明/提示

在第一个测试点中,只有排列 [3,1,4,2][3,1,4,2][4,1,3,2][4,1,3,2] 满足条件。以下以 [3,1,4,2][3,1,4,2] 为例,计算其 bb 数组:

  • sort([3])=0\text{sort}([3])=0
  • sort([3,1])=1\text{sort}([3,1])=1
  • sort([3,1,4])=1\text{sort}([3,1,4])=1
  • sort([3,1,4,2])=2\text{sort}([3,1,4,2])=2

因而 b=[0,1,1,2]b=[0,1,1,2],满足所有限制。

第一个测试用例只有排列 [1,2,3][1,2,3] 满足条件。

第三个测试用例有 88 个排列满足条件:

  • [2,3,1,4][2,3,1,4]
  • [2,4,1,3][2,4,1,3]
  • [3,2,1,4][3,2,1,4]
  • [3,4,1,2][3,4,1,2]
  • [3,4,2,1][3,4,2,1]
  • [4,2,1,3][4,2,1,3]
  • [4,3,1,2][4,3,1,2]
  • [4,3,2,1][4,3,2,1]
首页