BZOJ1079 [SCOI2008]着色方案
<div class="post_brief"><p> 看上去比较不可做的DP。好像别人写的记搜跑得飞快。</p> 我看我是写最小表示写上瘾了。 压一下状态,有点像今天第二题。算每种值的有多少。然后直接跑。 感觉废状态比较多啊,跑得好慢。另外用memset清空高维数组会比较快。 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int mod = 1e9 + 7; const int maxn = 17; const int maxst = 16009; #define mbit(a,b) ((a)<<((b)<<2)) #define gbit(a,b) (((a)>>((b)<<2))&0xf) #define _l (long long int) int m, c[maxn], n, mt, tots, slst[maxst]; int f[2][7][maxst]; void dfsState(int t, int l, int v) { if (l == mt + 1) { slst[tots ++] = v | t; } else { for (int i = 0; i <= t; ++ i) dfsState(t - i, l + 1, v | mbit(i, l)); } }...