U1376 「USACO 2025.02 Bronze」Printing Sequences

暂无评定 传统题 USACO2025Bronze 上传者
时间限制2000ms
内存限制256MiB
通过 / 提交0/0

U1376「USACO 2025.02 Bronze」Printing Sequences

暂无评定 传统题 USACO2025Bronze 上传者
时间限制2000ms
内存限制256MiB
通过 / 提交0/0

本题使用标准输入、标准输出,无需读写题面中提到的文件。

题目描述

Bessie 正在学习用一种简单的编程语言写代码。她先定义一个合法程序,然后执行它以产生某个输出序列。

定义: 一个程序是由若干语句组成的非空序列。 一条语句要么形如 "PRINT cc",其中 cc 是一个整数;要么形如 "REP oo",后面跟着一个程序,再后面跟着 "END",其中 oo 是一个至少为 1 的整数。

执行: 执行一个程序会按顺序执行其中的语句。 执行语句 "PRINT cc" 会将 cc 追加到输出序列的末尾。 执行以 "REP oo" 开头的语句,会将内部程序按顺序总共执行 oo 次。

下面是一个 Bessie 会写的程序示例。 REP 3 PRINT 1 REP 2 PRINT 2 END END 该程序输出序列 [1,2,2,1,2,2,1,2,2][1,2,2,1,2,2,1,2,2]。

Bessie 想输出一个由 NN(1≤N≤1001 \le N \le 100)个正整数组成的序列。Elsie 挑战她最多只能使用 KK(1≤K≤31 \le K \le 3)条 "PRINT" 语句。注意 Bessie 可以使用任意多条 "REP" 语句。另请注意,序列中的每个正整数都不超过 KK。

对于 TT(1≤T≤1001 \le T \le 100)个相互独立的测试用例,判断 Bessie 是否能写出一个程序,在最多使用 KK 条 "PRINT" 语句的情况下输出给定序列。

输入格式

第一行包含 TT。 每个测试用例的第一行包含两个用空格分隔的整数 NN 和 KK。 每个测试用例的第二行包含 NN 个用空格分隔的正整数,每个数均不超过 KK,表示 Bessie 想要产生的序列。

输出格式

对于每个测试用例,单独一行输出 "YES" 或 "NO"(区分大小写)。

2
1 1
1
4 1
1 1 1 1
YES
YES
11
4 2
1 2 2 2
4 2
1 1 2 1
4 2
1 1 2 2
6 2
1 1 2 2 1 1
10 2
1 1 1 2 2 1 1 1 2 2
8 3
3 3 1 2 2 1 2 2
9 3
1 1 2 2 2 3 3 3 3
16 3
2 2 3 2 2 3 1 1 2 2 3 2 2 3 1 1
24 3
1 1 2 2 3 3 3 2 2 3 3 3 1 1 2 2 3 3 3 2 2 3 3 3
9 3
1 2 2 1 3 3 1 2 2
6 3
1 2 1 2 2 3
YES
NO
YES
NO
YES
YES
YES
YES
YES
NO
NO

提示

对于第二个测试用例,下面的代码使用 11 条 "PRINT" 语句输出序列 [1,1,1,1][1,1,1,1]。 REP 4 PRINT 1 END

对于第一个测试用例,下面的代码使用 22 条 "PRINT" 语句输出序列 [1,2,2,2][1,2,2,2]。 PRINT 1 REP 3 PRINT 2 END 对于第二个测试用例,答案是 "NO",因为不可能在最多使用 22 条 "PRINT" 语句的情况下输出序列 [1,1,2,1][1,1,2,1]。 对于第六个测试用例,下面的代码使用 33 条 "PRINT" 语句输出序列 [3,3,1,2,2,1,2,2][3,3,1,2,2,1,2,2]。 REP 2 PRINT 3 END REP 2 PRINT 1 REP 2 PRINT 2 END END

评分: 输入 3:K=1K=1 输入 4-7:K≤2K \le 2 输入 8-13:无额外限制。 题目来源:Alex Liang

来源

USACO|2025|Bronze