CosmicBlocks

作者:辜俊儒

关键词:搜索,网络流

题目简述

给出 种颜色,每种颜色有一定数量的砖块,玩家A用所有砖块堆成若干个塔,每个塔的高度不一定相同,每种颜色的所有砖块必须在同一高度上,两种方案不同当且仅当在一种方案中,出现了颜色为i的砖块在颜色为j的砖块上,但另一种方案中没有出现。

对于一个玩家A的方案,玩家B每次可以喊出一个颜色,并拿走没有被覆盖的所有该颜色砖块,每种颜色必须喊且仅喊一次,若能拿走所有砖块,则玩家B的方案对玩家A的方案可行。

你需要计算有多少个玩家A的方案,玩家B的对该玩家A的方案可行的方案数量在 之间。

每种颜色的砖块数量不超过

分析

由于特别小,可以考虑大量枚举。

算法

先枚举每一种颜色的高度;

对于每相邻的两层,枚举两种颜色(颜色的高度等于颜色的高度加),是否有颜色为的砖块放在颜色为的砖块上,如果有则在网络图中连一条下界为,上界为正无穷的边;如果满流,则该玩家 A的方案可行。

对于一种可行的玩家A方案,计算对应的玩家B方案数,只需枚举的排列即可。

最坏时间复杂度

其中为网络流的复杂度;

当有两层各有3种颜色时, 达到最大,为

results matching ""

    No results matching ""