#CF1358B. 玛丽亚打破自我隔离
玛丽亚打破自我隔离
题目描述
每个测试的时间限制:2 秒
每个测试的内存限制:256 兆字节
玛丽亚是她所在楼里最活跃的老太太。她已经厌倦了呆在家里,决定组织一场反对新冠病毒的仪式。
她有 个朋友(都是老太太,玛丽亚本人不计入这个数字)。第 个老太太愿意参加仪式,前提是当她出现在院子里时,院子里至少有 个其他老太太。请注意,老太太们可以同时进入院子。形式化地说,如果在此之前或同时进入院子的其他老太太的人数大于等于 ,则老太太 同意前来。
老太太们按照以下方式聚集在院子里:
- 最初,只有玛丽亚在院子里(即初始院子里的人数为 )。
- 其余 个老太太都在家。
- 每一步,玛丽亚选择一个尚未进入院子的老太太子集。她向每个选中的老太太承诺,当她出现时,院子里至少有 个其他老太太(包括玛丽亚)。玛丽亚可以同时叫来多个老太太,此时这些老太太会同时进入院子。
- 她不能欺骗老太太,也就是说,如果第 个老太太在进入院子的那一刻发现其他老太太(不包括她自己,但包括玛丽亚)的数量严格小于 ,这种情况是不允许的。请注意,如果多个老太太同时进入院子,那么每个人在进入时都能看到其他同时进入的人。
你的任务是找出玛丽亚最多可以召集多少老太太(包括她自己)参加仪式。毕竟,在隔离期间,聚集的人越多,仪式就越有效!
考虑一个例子:如果 ,,那么:
- 第一步,玛丽亚可以叫来编号为 和 的老太太,她们每个人在进入院子时会看到 个人(注意 ,);
- 第二步,玛丽亚可以叫来编号为 、 和 的老太太,她们每个人在进入院子时会看到 个人(注意 ,,);
- 第 个老太太无法被叫来。因此,答案为 (玛丽亚自己加上另外 个老太太)。
输入格式
第一行包含一个整数 ()—— 输入中测试用例的数量。接下来是每个测试用例。
每个测试用例的第一行包含一个整数 ()—— 老太太的数量(玛丽亚不计入此数)。
第二行包含 个整数 ()。
保证所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,输出一个整数 ()—— 院子里最多可能的老太太人数。
4
5
1 1 2 2 1
6
2 3 4 5 6 7
6
1 5 4 5 1 9
5
1 2 3 5 6
6
1
6
4
说明
- 第一个测试用例:第一步玛丽亚就可以叫来所有老太太。她们每个人在进入时会看到 个人。因此,玛丽亚和另外 个老太太会在院子里。
- 第二个测试用例:没有人能被叫来,所以玛丽亚独自一人待在院子里。
- 第三个测试用例已在上面详细描述。
- 第四个测试用例:第一步玛丽亚可以叫来编号为 、 和 的老太太。如果第二步玛丽亚单独叫 或 中的一个,那么当这位老太太出现时,她只会看到 个人(这是不允许的)。这意味着玛丽亚不能单独叫第 个或第 个老太太。如果她同时叫 和 ,那么她们出现时会看到 个人。尽管这对第 个老太太来说足够,但第 个老太太不满意()。因此玛丽亚不能同时叫第 个和第 个老太太。所以总共有玛丽亚和第一步的三位老太太在院子里,共 人。