求通过的大佬看看我这可怜的dfs吧,卡一晚上了

P2157 [SDOI2009] 学校食堂

终于改好啦!虽然提交上去莫名全部re,但至少我自己用rand()造的数据没问题了。 ```cpp int dfs(int i, int j, int k) { if (i > N) return 0; if (dp[i][j][k] > 0) return dp[i][j][k]; if (j & 1) return dp[i][j][k] = dfs(i + 1, j >> 1, ((k > -INF) ? k - 1 : -1)); int m = INF; int r = INF; for (int t = 0; ; t++) { if (i + t > r) break; if (!((j >> t) & 1)) { r = min(r, i + t + B[i + t]); m = min(m, ((k>-100)?(T[i + k] ^ T[i + t]):0) + dfs(i, j | (1 << t), t)); } } return dp[i][j][k] = m; } ```
by ddwqwq @ 2018-01-09 20:53:54


|