紀念第乙個純自己寫的狀壓dp
感謝我的好友吳穎涵幫助除錯【流下了沒有技術的淚水】
卡點:1.函式see1 see2中的for不能用while!(關於0的處理)
2.統計答案的迴圈意義review
3.萬年不變陣列範圍 首先陣列意義開範圍
#include #include #include #include #include using namespace std;
int n, m, k, pk, as;
int cnt;
int cld[20000];
int f[5000][5000], ans[15000][3000];
int dk;
int maxx = 1;
int modd = 1e6;
int see1(int x)
return 1;
}int see2(int u, int v)
return 1;
}void jud()
for (int i = 1; i <= cnt; i++)
for (int j = 1; j <= cnt; j++)
if (see2(i, j) == 1)
f[i][j] = f[j][i] = 1;
}void work1()
jud();
if (pk == 0)
for (int i = 1; i <= n; i++)
} else if (i == 1)
ans[i][pk] = 1;
else
for (int j = 1; j <= cnt; j++)
if (f[j][pk])
ans[i][pk] = (ans[i][pk] + ans[i - 1][j]) % modd;
}for (int i = 1; i <= cnt; i++) as = (as + ans[n][i]) % modd;
cout << as << endl;
}int main()
塗抹果醬 狀壓dp
題目描述 tyvj 兩周年慶典要到了,sam 想為 tyvj 做乙個大蛋糕。蛋糕俯檢視是乙個n m 的矩形,它被劃分成n m 個邊長為 1 1的小正方形區域 可以把蛋糕當成n 行 m列的矩陣 蛋糕很快做好了,但光禿禿的蛋糕肯定不好看!所以,sam 要在蛋糕的上表面塗抹果醬。果醬有三種,分別是紅果醬 ...
塗抹果醬(狀壓dp)
塗抹果醬 tyvj兩周年慶典要到了,sam想為tyvj做乙個大蛋糕。蛋糕俯檢視是乙個n m的矩形,它被劃分成n m個邊長為1 1的小正方形區域 可以把蛋糕當成n行m列的矩陣 蛋糕很快做好了,但光禿禿的蛋糕肯定不好看!所以,sam要在蛋糕的上表面塗抹果醬。果醬有三種,分別是紅果醬 綠果醬 藍果醬,三種...
LOJ 10172 塗抹果醬 狀壓DP
題目描述 看完題目,很清楚的想到這道題用狀壓dp來做,只不過這道題是個三進製的,做題過程中須注意轉換。下面簡單說一下演算法 1.用0 1 2 來代替題目中的1 2 3這樣比較方便,將第k行以三進製數存入。先用乙個陣列存所以可行的狀態,若第k行的狀態不在陣列裡,直接輸出0.2.這道題中已經給出了一行的...