题解【[AGC002B] Box and Ball】

原题链接:Link

前言

AGC 的 B 题,我个人觉得这道题可能作为 AGC 的 B 题难度略低了。

看到上一篇题解可能在思维方面有一点没讲清楚,因此发一篇题解详解一下思路。

分析

由于是求红球可能在的盒子的总数,因此这里我们需要捋一捋思路,下面我借样例2详解一下。

第一组 \(x\)\(y\)\(1\)\(2\),表示从一号盒子取出一个球到二号盒子,因为一号盒子此时只有一个红球,因此一号盒子可以确定没有红球,二号盒子在第一步结束的时候确定有红球。

第二组 \(x\)\(y\)\(2\)\(3\),表示从二号盒子取出一个球到三号盒子,因为二号盒子此时只有一个红球与一个白球,拿到三号盒子的球可能是红球也可能是白球,所以我们无法确定第二步结束时红球在二号盒子还是三号盒子当中,因此第二步结束后二号盒子和三号盒子都有可能有红球。

第三组 \(x\)\(y\)\(2\)\(3\),表示从二号盒子取出一个球到三号盒子,因为二号盒子此时只有一个球(当然我们无法确定是红球还是白球),拿到三号盒子后二号盒子便没有球了,自然也不存在有可能有红球的情况了。而此时全场的球都在三号盒子内,因此在第三步结束后只有三号盒子存在有红球的情况。

由上可以推出有 \(1\) 个盒子可能有红球。

思路

上面我们分析了样例,读到这里读者们应该都比较清楚过程了。

我们用数组 \(p\) 记录可能有红球的盒子,同时用数组 \(check\) 记录此盒子是否有球,当 \(check\) 等于 \(0\) 时就表示此盒子没有球了,因此也不存在有红球的情况,此时同位置的 \(p\) 就清零。

具体思路就是这样,读者在完全搞懂后实现应该不成问题,因此这边就不给代码了。

结尾

首先感谢管理员对我提出的题目上的一些小问题都做了修改,管理员辛苦了。

同时希望这篇题解对您有所帮助!

P.S:翻译有一个小地方没有讲清楚,其实每一个盒子都只有一个球,笔者在这里卡了一段时间,后来看英文题面才发现问题

posted @ 2020-03-03 23:37  Kriraya  阅读(187)  评论(0)    收藏  举报