DP 塗抹果醬

2021-09-11 11:20:26 字數 1059 閱讀 7688

紀念第乙個純自己寫的狀壓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.這道題中已經給出了一行的...