CF286E Ladies' Shop
题目描述
在 Ultima Thule 城市新开了一家女士用品店。为开业做准备,店里采购了 $n$ 个袋子。每个袋子由你能往里面放的物品的总重量 $a_i$ 表征。奇怪的是,这些袋子只能用来放总重量恰好为 $a_i$ 的物品组合,不能放总重量严格小于 $a_i$ 的物品。然而,店里即将出售的物品的重量还没有被确定。你现在需要确定这些物品的重量。
你的任务是找到一组物品的重量 $p_{1}, p_{2}, \ldots, p_{k}$(满足 $1 \le p_{1} < p_{2} < \ldots < p_{k}$),使得:
1. 每个袋子都会被用到。也就是说,对于任意一个 $i$($1 \le i \le n$),都存在一组物品,其总重量恰好等于 $a_i$。假设每种重量的物品数量都是无限的。你可以在一个袋子中放多个相同重量的物品。
2. 对于任意物品组合,只要其总重量小于等于 $m$,一定存在一个袋子可以装下这组物品。类似地,一组物品可以包含任意多同重量物品。
3. 在所有满足上述条件的物品重量集合中,要求集合的元素个数 $k$ 尽量小。
请你求出满足要求的那组物品重量集合。
输入格式
第一行为用空格分隔的两个整数 $n$ 和 $m$($1 \le n, m \le 10^6$)。
第二行为 $n$ 个不同的用空格分隔的整数 $a_1, a_2, \ldots, a_n$($1 \le a_1 < a_2 < \ldots < a_n \le m$),表示每个袋子的重量限制。
输出格式
若不存在满足要求的 $p_i$ 集合,第一行输出 “NO”。
否则,第一行输出 “YES”,第二行输出整数 $k$(表示最小的合适集合中数的数量),第三行输出 $k$ 个用空格分隔的整数 $p_1, p_2, \ldots, p_k$($1 \le p_{1} < p_{2} < \ldots < p_{k}$)。如果有多个解,输出任意一个即可。
说明/提示
由 ChatGPT 5 翻译