BZOJ 1925: [Sdoi2010]地精部落
二次联通门 : BZOJ 1925: [Sdoi2010]地精部落
/* BZOJ 1925: [Sdoi2010]地精部落 设f(i, j) 为已考虑了i个排列(离散), 最后一位为j且形状为山谷的方案数 g(i, j) 同理,只不过表示的是山峰 显然f(i, j) = Σ(g (i - 1, k)) (j <= k < i) 又通过观察,发现g(i, j) = f(i, i + 1 - j) 然后联立两式,滚动数组优化 */ #include <cstdio> #include <cstring> #define rg register #define Max 5000 int f[2][Max], s, Answer, N, Mod; int main (int argc, char *argv[]) { scanf ("%d%d", &N, &Mod); f[1][1] = 1; rg int i, j; for (i = 2; i <= N; ++ i) { memset (f[i & 1], 0, sizeof f[0]); for (j = i - 1, s = 0; j; -- j) s = (s + f[i & 1 ^ 1][i - j]) % Mod, f[i & 1][j] = s; } for (j = 1; j <= N; ++ j) Answer = (Answer + f[N & 1][j]) % Mod; printf ("%d", (Answer << 1) % Mod); return 0; }
myj 吊打我Orz,xxy 捆起来打我Orz,myl 文化课上天Orz, lrh 姿势水平敲高Orz, hkd 特别胖Orz%%%,cys 智商感人Orz,syl zz专业Orz,我没有学上, 我们未来一片光明