阿姆斯特朗回旋加速式阿姆斯特朗炮是一种非常厉害的武器,这种武器可以毁灭自身同行同列两个单位范围内的所有其他单位(其实就是十字型),听起来比红警里面的法国巨炮可是厉害多了。现在,零崎要在地图上布置一片阿姆斯特朗回旋加速式阿姆斯特朗炮,那么在N行M列单位长度大小的地图上,求解阿姆斯特朗回旋加速式阿姆斯特朗炮最大的部署数量和对应部署方案总数。
每组输入一行,为两个整数N,M (N <= 100;M <= 10)
每组一行两个整数,
第一个为阿姆斯特朗回旋加速式阿姆斯特朗炮的个数,第二个为此数量下的摆放方式总数。
3 3
3 6
100 1为阿姆斯特朗回旋加速式阿姆斯特朗炮的位置,方案不唯一。
010
001
状态压缩是一种特殊的技巧,不止可以用在dp中。状态压缩其实是在利用数据结构,由于基础数据类型int有32位,一个int变量就可以表示2^32个状态。状态压缩其实是一种优化方法,有很大局限性。第一,单元状态通常只有两种(0、1,其实多了压缩的道理是一样的,但是没有位运算就没什么优势了),第二,单元维度通常不超过50 ( int才32,多了longlong都爆掉难道用高精度大整数压缩不成……)
状压dp本质上还是dp,问题大多数还是求解最大值或者解决方案总数之类的,但是状态数量巨大普通方法难以表示,所以利用整数可以将状态维度压缩到1维。