#CF2162H. Beautiful Problem

    ID: 6978 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>动态规划CodeforcesCodeforces Round 1059(Div3)Div3HCF2162H2900

Beautiful Problem

题目描述

对于长度为 nn 的数组 aa 以及三个整数 xxllrr1lrn1 \le l \le r \le n),定义:

$$f(a,x,l,r) = \begin{cases} 0, & \text{如果} \ (x-\min_{j=l}^{r}(a_j)) \cdot (x-\max_{j=l}^{r}(a_j)) < 0 \\ 1, & \text{如果} \ (x-\min_{j=l}^{r}(a_j)) \cdot (x-\max_{j=l}^{r}(a_j)) \ge 0 \end{cases}$$

现给定一个长度为 nn 的数组 aa1ain1 \le a_i \le n),以及 mm 个区间 [li,ri][l_i, r_i]1lirin1 \le l_i \le r_i \le n)。

对于每个 x=1,2,,nx=1,2,\ldots,n,独立地回答如下问题:

  • 是否存在 aa 的一个重排列 aa',使得对于所有 1im1 \le i \le m,都有 f(a,x,li,ri)=1f(a',x,l_i,r_i)=1

输入格式

第一行包含一个整数 tt1t21041 \le t \le 2 \cdot 10^4),表示测试用例的组数。

每组测试用例的描述如下:

第一行包含两个整数 nnmm2n20002 \le n \le 20001m20001 \le m \le 2000)。

第二行包含 nn 个用空格分隔的整数 a1,a2,,ana_1, a_2, \cdots, a_n1ain1 \le a_i \le n)。

接下来的 mm 行,每行包含两个整数 li,ril_i, r_i1lirin1 \le l_i \le r_i \le n),表示一个区间。

保证所有测试用例中 n2n^2 之和与 m2m^2 之和都不超过 41064 \cdot 10^6

输出格式

对于每个测试用例,输出一个二进制字符串 ss。对于 x=1,2,,nx=1,2,\ldots,n,当且仅当存在 aa 的一个重排列 aa',使得对于所有 1im1 \le i \le m,都有 f(a,x,li,ri)=1f(a',x,l_i,r_i)=1 时,sx=1s_x=1;否则 sx=0s_x=0

样例

4
4 2
1 1 3 4
1 2
2 4
3 2
1 1 3
1 2
2 3
3 1
1 1 1
1 3
9 3
4 5 9 1 1 1 2 2 3
1 6
3 7
7 9
1011
101
111
100100001

样例说明

在第一个测试用例中:

  • 对于 x=1x=1,一种可行的重排列为 a=[1,1,3,4]a'=[1,1,3,4]
  • 对于 x=2x=2,不存在重排列 aa' 使得 f(a,2,1,2)=f(a,2,2,4)=1f(a',2,1,2)=f(a',2,2,4)=1
  • 对于 x=3x=3,唯一可行的重排列为 a=[4,3,1,1]a'=[4,3,1,1]
  • 对于 x=4x=4,一种可行的重排列为 a=[1,1,3,4]a'=[1,1,3,4]

由 ChatGPT 5 翻译

来源

Codeforces 2162H,英文题名 Beautiful Problem。