QOJ.ac

QOJ

Límite de tiempo: 2.0 s Límite de memoria: 512 MB Puntuación total: 100 Hackeable ✓

#16699. 切割纸条

Estadísticas

你在一家工厂工作,负责操作一台切纸机。这台机器可以将任意长度的纸条切成 $2$ 等份或 $3$ 等份。

作为日常工作的一部分,你会收到一条长度为 $n$ 的纸条,以及一份你应当制作的目标纸条长度列表。该列表由 $m$ 对整数 $c_i$ 和 $l_i$ 组成,意味着你的工作结果应该恰好包含 $c_i$ 条长度为 $l_i$ 的纸条。时局艰难,你的客户都不容忍任何纸张损耗,因此所有纸条的总长度等于 $n$,即 $\sum_{i=1}^{m} l_i \cdot c_i = n$。

确定是否可能完成该订单,并设计一份操作说明列表来实现这一目标。

输入格式

第一行包含一个整数 $n$ ($1 \le n \le 2^{62}$) —— 你在开始时获得的纸条长度。保证对于某些整数 $a$ 和 $b$,有 $n = 2^a \cdot 3^b$。

第二行包含一个整数 $m$ ($1 \le m \le 700$) —— 描述最终长度的对数。

接下来的 $m$ 行,第 $i$ 行包含两个整数 $l_i$ 和 $c_i$ ($1 \le l_i \le n, 1 \le c_i \le n$)。保证所有的 $l_i$ 互不相同,且所有纸条的总长度等于 $n$。

输出格式

如果无法完成订单,在输出的唯一一行中打印 "NO"(不含引号)。

否则,在输出的第一行打印 "YES"(不含引号)。在第二行打印操作块的数量 $k$ ($0 \le k \le 500\,000$)。接下来打印 $k$ 行,包含操作块的描述。每个描述由三个整数 $l_i$、$c_i$ 和 $o_i$ ($1 \le l_i, c_i \le n, 2 \le o_i \le 3$) 组成,表示应当使用切纸机将 $c_i$ 条长度为 $l_i$ 的纸条中的每一条切成 $o_i$ 等份。

保证如果存在解,则存在一个使用不超过 $500\,000$ 个操作块的解。

如果存在多个可能的解,你可以输出其中任意一个。

样例

输入样例 1

1
1
1 1

输出样例 1

YES
0

输入样例 2

6
2
2 2
1 2

输出样例 2

YES
2
6 1 3
2 1 2

输入样例 3

6
3
2 1
3 1
1 1

输出样例 3

NO

输入样例 4

6
2
5 1
1 1

输出样例 4

NO

说明

在第二个样例中,不能交换操作块的顺序。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.