UVA 11795 - Mega Man's Mission(状态压缩dp)(二)
2014-11-24 09:20:55
·
作者:
·
浏览: 2
qPC9lbT48c3VwPnRoPC9zdXA+PC9zdHJvbmc+IGNoYXJhY3RlciBvZiA8c3Ryb25nPjxlbT5pPC9lbT48c3VwPnRoPC9zdXA+PC9zdHJvbmc+IHJvdwogd2lsbCBiZSA8c3Ryb25nPqGuMaGvPC9zdHJvbmc+IGlmIHRoZSB3ZWFwb24gb2YgPHN0cm9uZz48ZW0+aTwvZW0+PHN1cD50aDwvc3VwPjwvc3Ryb25nPiBSb2JvdCBjYW4gZGVzdHJveSB0aGUgPHN0cm9uZz48ZW0+ajxzdXA+dGg8L3N1cD48L2VtPjwvc3Ryb25nPiBSb2JvdC4gTm90ZSB0aGF0LCBhIFJvYm90oa9zIHdlYXBvbiBjb3VsZCBiZSB1c2VkIHRvIGRlc3Ryb3kgdGhlIFJvYm90IGl0c2VsZiwgYnV0IHRoaXMgd2lsbCBoYXZlIG5vIGltcGFjdAogYXMgdGhlIFJvYm90IG11c3QgYmUgZGVzdHJveWVkIGFueXdheSBmb3IgaXRzIHdlYXBvbiB0byBiZSBhY3F1aXJlZC48L3A+CjxoMj5PdXRwdXQ8L2gyPgo8cD5Gb3IgZWFjaCBjYXNlIG9mIGlucHV0LCB0aGVyZSB3aWxsIGJlIG9uZSBsaW5lIG9mIG91dHB1dC4gSXQgd2lsbCBmaXJzdCBjb250YWluIHRoZSBjYXNlIG51bWJlciBmb2xsb3dlZCBieSB0aGUgbnVtYmVyIG9mIHdheXMgTWVnYSBNYW4gY2FuIGNvbXBsZXRlIGhpcyBvYmplY3RpdmUuIExvb2sgYXQgdGhlIHNhbXBsZSBvdXRwdXQgZm9yIGV4YWN0IGZvcm1hdC48L3A+CjxwPiA8L3A+Cjx0YWJsZSBib3JkZXI9"0" cellspacing="0" cellpadding="0">
Sample Input
Sample Output
3
1
1
1
2
11
01
10
3
110
011
100
000
Case 1: 1
Case 2: 2
Case 3: 3
题意:给定n代表n个敌人,第一是洛克人的武器,以下n行是n个敌人有的武器,消灭敌人后可以得到她的武器,武器的表示方式是一个二进制数能消灭敌人是1,不能是0,问总共有几种顺序可以消灭所有敌人。
思路:明显的状态压缩DP,先预处理消灭的一些敌人之后拥有的武器可以消灭的敌人数组have,然后dp,dp[i]表示消灭i这个状态的敌人有几种方法,那么推出转移方程为dp[i] = dp[i^(1<
代码:
#include
#include
const int N = 17; const int MAXN = (1<