测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A6721. 「NOI2022」冒泡排序

编程题 NOI/NOI+/CTSC

题目描述

小 Z 所研究的序列均由非负整数构成。它的长度为 $n$,且必须满足 $m$ 个附加条件。其中第 $i$ 个条件为:下标在 $[L_i, R_i]$ 中的数,即 $a_{L_i}, a_{L_{i+1}},\dots,a_{R_i}$ 这些数,其最小值**恰好为 $\boldsymbol{V_i}$**。

他知道冒泡排序时常会超时。所以,他想要知道,在所有满足附加条件的序列中,进行冒泡排序的交换次数的最少值是多少。

输入格式

从文件 bubble.in 中读入数据。

本题有多组数据。

输入的第一行包含一个正整数 $T$。

对于每组数据,第一行包含两个正整数 $n,m$。数据保证 $1 \leq n,m \leq 10^6$。

接下来 $m$ 行,每行三个非负整数 $L_i, R_i, V_i$,表示一组附加条件。数据保证 $1 \leq L_i \leq R_i \leq n$、$0 \leq V_i \leq 10^9$。

输出格式

输出到文件 bubble.out 中。

输出共 $T$ 行,每行一个整数。

对于每组数据,如果存在满足这 $m$ 个附加条件的序列,则输出在所有满足附加条件的序列中,冒泡排序交换次数的最小值。如果不存在满足所有条件的序列,则输出 $-1$。

输入输出样例

输入 #1
1
3 2
1 1 2022
2 3 39
输出 #1
1

说明/提示

本题共 $25$ 个测试点。全部测试点满足:$1 \leq T \leq 1000$,$1 \leq \sum n, \sum m \leq 10^6$,$1 \leq L_i \leq R_i \leq n$,$0 \leq V_i \leq 10^9$。

其中 $\sum n, \sum m$ 分别表示所有测试点的 $n$ 的总和和 $m$ 的总和。$\sum n^2, \sum m^2, \sum n^3, \sum m^3$ 的含义类似。

| 测试点 | 数据范围 | 特殊性质 |
|:------------:|:------------------------------------------------------:|:------------:|
| $1 \sim 4$ | $n,m \leq 7$,且最多 $2$ 组数据不满足 $n, m \leq 5$ | |
| $5 \sim 7$ | $n,m \leq 17$,且最多 $3$ 组数据不满足 $n, m \leq 9$ | A |
| $8 \sim 10$ | $n,m \leq 100$,$\sum n^3,\sum m^3 \leq 4 \times 10^7$ | A |
| $11 \sim 12$ | $n,m \leq 2000$,$\sum n^2,\sum m^2 \leq 4 \times 10^7$ | A |
| $13 \sim 14$ | $n,m \leq 2000$,$\sum n^2,\sum m^2 \leq 4 \times 10^7$ | B |
| $15 \sim 16$ | $n,m \leq 2000$,$\sum n^2,\sum m^2 \leq 4 \times 10^7$ | C |
| $17 \sim 18$ | $n,m \leq 2000$,$\sum n^2,\sum m^2 \leq 4 \times 10^7$ | |
| $19$ | $\sum n,\sum m \leq 10^6$ | A |
| $20$ | $\sum n,\sum m \leq 10^6$ | B |
| $21 \sim 22$ | $\sum n,\sum m \leq 10^6$ | C |
| $23 \sim 25$ | $\sum n,\sum m \leq 10^6$ | |

特殊性质 A:对于 $1 \leq i \leq m$,$0 \leq V_i \leq 1$。
特殊性质 B:对于 $1 \leq i \leq m$,$L_i = R_i$。
特殊性质 C:输入给出的 $m$ 个区间 $[L_i, R_i]$ 两两不相交。

本题的部分测试点输入量较大。我们建议你使用较为快速的读入方式。
上一题 去做题 下一题