zoukankan      html  css  js  c++  java
  • luogu 2592 区间dp

    (f_{i, j, a, b}) 表示当前一共有 (i) 人排队, (j) 名男生,男生数目 - 女生数目为 (a), 女生数目 - 男生数目为 (b)(a, b >= 0)
    转移显然

    #include <bits/stdc++.h>
    
    const int N = 160, Mod = 12345678;
    
    int f[N << 1][N][25][25];
    int n, m, k;
    
    int main() {
    	std:: cin >> n >> m >> k;
    	f[0][0][0][0] = 1;
    	for(int i = 0; i < n + m; i ++)
    		for(int j = 0; j <= n; j ++)
    			for(int a = 0; a <= k; a ++)
    				for(int b = 0; b <= k; b ++) {
    					if(f[i][j][a][b]) {
    						if(a + 1 <= k && j + 1 <= n)
    							(f[i + 1][j + 1][a + 1][std:: max(b - 1, 0)] += f[i][j][a][b]) %= Mod;
    						if(b + 1 <= k && i - j + 1 <= m)
    							(f[i + 1][j][std:: max(a - 1, 0)][b + 1] += f[i][j][a][b]) %= Mod;
    					}
    				}
    	int Answer = 0;
    	for(int p = 0; p <= n; p ++)
    		for(int i = 0; i <= k; i ++) 
    			for(int j = 0; j <= k; j ++) 
    				(Answer += f[n + m][p][i][j]) %= Mod;
    	std:: cout << Answer;
    	return 0;
    }
    
  • 相关阅读:
    学习JavaDay07
    学习JavaDay05
    学习JavaDay0402
    学习JavaDay04
    学习JavaDay03
    学习JavaDay02
    学习JavaDay01
    数据库的增删改查
    关于Spring
    关于多线程Thread的简单应用
  • 原文地址:https://www.cnblogs.com/shandongs1/p/9680799.html
Copyright © 2011-2022 走看看