【BZOJ 1037】[ZJOI2008]生日聚会Party
2017-10-04 18:45
253 查看
【题目链接】:http://www.lydsy.com/JudgeOnline/problem.php?id=1037
【题意】
【题解】
/* 设f[i][j][k][l] 表示前i个人中,有j个男生,它的后缀中,男生比女生多k人,女生比男生多l个人的方案数 (这里k和l是后缀的男女差值的的最大值,不比另一方多就置为0; ①新加一个男生 f[i+1][j+1][k+1][max(l-1),0]+=f[i][j][k][l]; ②新加一个女生 f[i+1][j][max(k-1,0)][l+1]+=f[i][j][k][l]; f[0][0][0][0] = 1; 取模! */
【完整代码】
#include <bits/stdc++.h> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define LL long long #define rep1(i,a,b) for (int i = a;i <= b;i++) #define rep2(i,a,b) for (int i = a;i >= b;i--) #define mp make_pair #define pb push_back #define fi first #define se second #define rei(x) scanf("%d",&x) #define rel(x) scanf("%lld",&x) #define ref(x) scanf("%lf",&x) typedef pair<int, int> pii; typedef pair<LL, LL> pll; const int dx[9] = { 0,1,-1,0,0,-1,-1,1,1 }; const int dy[9] = { 0,0,0,-1,1,-1,1,-1,1 }; const double pi = acos(-1.0); const int N = 150 + 10; const int K = 20 + 5; const int MOD = 12345678; int n, m, k; int f[N * 2] [K][K], ans = 0; void in() { rei(n), rei(m), rei(k); } void add(int &a, int &b) { a += b; if (a >= MOD) a -= MOD; } void do_dp() { f[0][0][0][0] = 1; rep1(i,0,n+m-1) rep1(j,0,n) rep1(k1,0,k) rep1(k2, 0, k) if (f[i][j][k1][k2]) { add(f[i + 1][j + 1][k1 + 1][max(k2 - 1,0)],f[i][j][k1][k2]); add(f[i + 1][j][max(k1 - 1, 0)][k2 + 1], f[i][j][k1][k2]); } rep1(i, 0, k) rep1(j, 0, k) add(ans, f[n + m] [i][j]); } void out() { printf("%d\n", ans); } int main() { //freopen("F:\\rush.txt", "r", stdin); in(); do_dp(); out(); //printf("\n%.2lf sec \n", (double)clock() / CLOCKS_PER_SEC); return 0; }
相关文章推荐
- BZOJ 1037: [ZJOI2008]生日聚会Party
- bzoj 1037: [ZJOI2008]生日聚会Party dp
- [bzoj1037] [ZJOI2008]生日聚会Party
- [BZOJ 1037][ZJOI2008]生日聚会Party(DP)
- bzoj1037: [ZJOI2008]生日聚会Party
- 动态规划 BZOJ1037 [ZJOI2008]生日聚会Party
- BZOJ1037 [ZJOI2008]生日聚会Party
- BZOJ1037: [ZJOI2008]生日聚会Party
- bzoj1037 [ZJOI2008]生日聚会Party(dp)
- BZOJ 1037: [ZJOI2008]生日聚会Party 四维DP
- 【bzoj1037】[ZJOI2008]生日聚会Party
- [bzoj1037][ZJOI2008]生日聚会Party
- 1037: [ZJOI2008]生日聚会Party - BZOJ
- [递推] BZOJ1037: [ZJOI2008]生日聚会Party
- bzoj 1037: [ZJOI2008]生日聚会Party (dp)
- 【bzoj1037】【ZJOI2008】【生日聚会Party】【dp】
- Bzoj1037 [ZJOI2008]生日聚会Party
- bzoj1037: [ZJOI2008]生日聚会Party
- bzoj 1037: [ZJOI2008]生日聚会Party (DP)
- bzoj千题计划125:bzoj1037: [ZJOI2008]生日聚会Party