Griseo是黄金庭园的团宠小画家,最近她又开始了她的创作。 由于Griseo画工强大,所以她只需要在画布(视为 n*m 的二维平面,坐标起始点为 1)的某处点上一笔,颜料就会依照Griseo的想法无尽扩散,颜料的扩散方式是这样的: 1、初始时颜料会向上扩散; 2、每个小时,颜料会根据Griseo的想法扩散 s[i] 的距离; 3、当该小时结束后,颜料将分裂成两部分,向左上角以及右上角移动(颜料必须走过 si 的距离才能向两边分裂); Griseo想知道在每个小时末颜料的覆盖范围,以此推测画作的模样。

输入 第一行包含三个整数 n 、 m 、 t ,代表画布大小(n行m列)和颜料扩散时间; 第二行包含 t 个整数 ,代表第 i 个小时颜料扩散的距离; 第三行包含两个整数 x、y 代表颜料的初始位置。

输出 输出为一行,包含 t 个整数,第 i 个整数代表第 i 个小时末画布上颜料的覆盖范围。

使用分枝限界法解决该问题内容:由于颜料的扩散是逐小时进行的,因此可以考虑使用分枝限界法,每次分枝扩散一小时的颜料,直到达到目标时间t为止。

具体实现时,可以使用一个队列来存储每个小时的颜料扩散情况,队列中每个元素都表示一个状态,包含当前颜料的位置和扩散的方向(左上或右上)。每次从队列中取出一个状态,根据当前小时的扩散距离,向上扩散颜料,并将扩散后的两份颜料分别加入队列中,直到队列为空或达到目标时间t为止。

需要注意的是,为了避免重复扩散,需要记录每个位置上的颜料是否已经扩散过。

时间复杂度为O(nmt),空间复杂度为O(nmt)。

黄金庭园的团宠画家:颜料扩散问题的分枝限界法求解

原文地址: https://www.cveoy.top/t/topic/oczM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录