奇怪的道路
我看不出來是狀壓的狀壓
好吧,其實看到k的範圍應該去往狀壓方面想的。
然後,題目中說「任何乙個城市都與恰好偶數條道路相連(0也被認為是偶數)」。
所以,奇偶,兩種狀態可以用0,1來表示,那就妥妥的狀壓了。
設 \(dp_\) 表示當前已經考慮了i座城市,j條道路,當前狀態為sta的方案數。
用0表示奇數,1表示偶數,為了防止轉移時出現問題,所以只轉移第i個城市的前k個城市,通過異或能夠將連邊的兩個城市由奇變偶,由偶變奇。
則有\[dp_=\sum_^\sum_^-1}dp_1^2^}
\]因為在轉移的時候,sta表示的範圍在發生變化,所以對於每乙個i都要再單獨處理一下
\[dp_=\sum_^\sum_^-1}dp_
\]code:
#include#define top 10
#define max 32
#define re register
namespace oma
signed main()}}
for(re int j=0; j<=m; j++)}}
printf("%d\n",dp[n][m][0]);
return 0;
}}signed main()
奇怪的道路(狀壓)
時間限制 1 sec 記憶體限制 128 mb 小宇從歷史書上了解到乙個古老的文明。這個文明在各個方面高度發達,交通方面也不例外。考古學家已經知道,這個文明在全盛時期有n座城市,編號為1.n。m條道路連線在這些城市之間,每條道路將兩個城市連線起來,使得兩地的居民可以方便地來往。一對城市之間可能存在多...
2017 7 26 奇怪的道路 失敗總結
做不出來主要是老想著用2 30存每個點的狀態,用0 1表示連邊奇偶,就被限制住了 實際上我們應該注意到k 8,這樣我們就只用記錄前k個 其實就是遞推的思路,每次加入乙個新點,列舉這個點與前k個點各種情況的連邊,再考慮連與不連有什麼影響 再就是不同點的轉移要注意保持合法性 注意狀態記錄從右往左,這是因...
奇怪的道路 JXOI2012
小宇從歷史書上了解到乙個古老的文明。這個文明在各個方面高度發達,交通方面也不例外。考古學家已經知道,這個文明在全盛時期有n座城市,編號為1.n。m條道路連線在這些城市之間,每條道路將兩個城市連線起來,使得兩地的居民可以方便地來往。一對城市之間可能存在多條道路。據史料記載,這個文明的交通網路滿足兩個奇...