做不出來主要是老想著用2^30存每個點的狀態,用0 1表示連邊奇偶,,就被限制住了
實際上我們應該注意到k=8,這樣我們就只用記錄前k個、、
其實就是遞推的思路,每次加入乙個新點,列舉這個點與前k個點各種情況的連邊,再考慮連與不連有什麼影響
再就是不同點的轉移要注意保持合法性
注意狀態記錄從右往左,這是因為》正好可以削掉乙個邊界
只要能把所有情況都考慮進來,完成每乙個點加入前所有其他點的狀態的完整, 就是成功的dp
碼:
#include#includeusing namespace std;
#define p 1000000007
int n,m,k,k,f[35][35][(1<<9)][10];
int main()
printf("%d",f[n+1][m][0][0]);
}
做題一定不要鑽乙個幾乎不可能的點,要考慮從其他角度切入(尤其是dp的狀態設計)
還有就是不要看到題目奇怪就覺得不會了,這時應該盡量把題目壓縮,然後針對題目奇怪的地方找角度切入(如對8用狀壓、)
奇怪的道路(狀壓)
時間限制 1 sec 記憶體限制 128 mb 小宇從歷史書上了解到乙個古老的文明。這個文明在各個方面高度發達,交通方面也不例外。考古學家已經知道,這個文明在全盛時期有n座城市,編號為1.n。m條道路連線在這些城市之間,每條道路將兩個城市連線起來,使得兩地的居民可以方便地來往。一對城市之間可能存在多...
奇怪的道路 JXOI2012
小宇從歷史書上了解到乙個古老的文明。這個文明在各個方面高度發達,交通方面也不例外。考古學家已經知道,這個文明在全盛時期有n座城市,編號為1.n。m條道路連線在這些城市之間,每條道路將兩個城市連線起來,使得兩地的居民可以方便地來往。一對城市之間可能存在多條道路。據史料記載,這個文明的交通網路滿足兩個奇...
Jxoi2012 奇怪的道路
description 小宇從歷史書上了解到乙個古老的文明。這個文明在各個方面高度發達,交通方面也不例 外。考古學家已經知道,這個文明在全盛時期有n 座城市,編號為1.n。m 條道路連線在 這些城市之間,每條道路將兩個城市連線起來,使得兩地的居民可以方便地來往。一對城 市之間可能存在多條道路。據史料...