您的位置:首页 > 其它

【HNOI 模拟】Axonometric Projection

2015-08-29 16:19 211 查看

题目大意

给出一个由若干1×1×11\times1\times1的小方块堆砌而成的物体的正视图和侧视图(每一个行或列上对应的高度 ),求有多少种可行的堆砌方案。

物块长宽n≤50n\leq50

分析

首先一个比较巧妙的转化就是给出的正视图侧视图的高度顺序并不重要,我们可以先将它排序以便后续的操作。

然后一个很重要的转化就是不同的高度限制块(一整块他们都要求可视高度为某个值hh)之间是互相独立的,最终答案是他们分别的方案数乘起来。

考虑如果我们暴力解决这个问题,使用容斥原理。

那么终答案就是总数减去强制至少11个行或列不满足,加上强制至少22个列不满足,以此类推。

首先倘若我们没有将其排序,那么我们需要2n+m2^{n+m}地枚举这些行或列。当我们排完序后,只需要枚举有多少的行或列不满足,乘上一个组合数就可以了。

其次我们不难发现排序后的同一高度限制块必定是一个LL字型,并且限制比它高的部分都在LL的内侧,也就是说比它高的部分不会对它造成影响,而比它矮的部分本来就不影响。也就是说它彻底独立出来了。

剩下的就是简单的计算问题了。

最坏时间复杂度O(nm⋅log(nm))O(nm\cdot log(nm))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: