UVa11825 - Hackers Crackdown
出處:https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2925
解題策略:
dp,二進位表示集合
找出集合node[i],i等於0到(n-1),任意取集合node[i]的任意個數的聯集,每個集合node[i]可以使用一次,可以覆蓋所有點的最大次數
將每個電腦相鄰的電腦,轉成二進位表示的數字,node[i]=3,3表示000011,該node[i]集合有點0與點1
任意取node[i]的各種聯集儲存到cover[],例如cover[7],7為111,表示取node[2]、node[1]與node[0]的聯集
列舉集合的所有可能性S,且列舉S的子集到j,陣列result為最後獲得的結果
則若cover[j]等2^n-1,則表示j可以覆蓋所有機器,則dp關係如下,result[S^j]在之前已經求出
result[S] = max(result[S], result[S^j]+1)
其中S^j為S與j的差集,因為j為S的子集