博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[ZJOI2008]生日聚会
阅读量:5093 次
发布时间:2019-06-13

本文共 1305 字,大约阅读时间需要 4 分钟。

dp,f[i][j][k][l]表示前i个人,j个男生,后缀中男生比女生最多多k人,最少少l人的方案数。

/** * Problem:Party * Author:Shun Yao * Time:2013.5.30 * Result:Accepted * Memo:DP */#include 
#include
#include
long min(long x, long y) { return x < y ? x : y;}long max(long x, long y) { return x > y ? x : y;}const long MOD = 12345678;long n, m, lim, N, f[20043891], ans;int main() { freopen("party.in", "r", stdin); freopen("party.out", "w", stdout); scanf("%ld%ld%ld", &n, &m, &lim); N = n + m; memset(f, 0, sizeof f);#define F(a, b, c, d) f[(((a) * (n + 1) +(b)) * (lim + 1) + (c)) * (lim + 1) + (d)] long i, j, k, l, J, K, L; F(0, 0, 0, 0) = 1; for (i = 0; i < N; ++i) { for (J = min(i, n), j = 0; j <= J; ++j) for (K = min(j, lim), k = 0; k <= K; ++k) for (L = min(i - j, lim), l = 0; l <= L; ++l) { if (k < lim && j < n) { long &a = F(i + 1, j + 1, k + 1, max(l - 1, 0)); a = (a + F(i, j, k, l)) % MOD; } if (l < lim && i - j < m) { long &b = F(i + 1, j, max(k - 1, 0), l + 1); b = (b + F(i, j, k, l)) % MOD; } } } ans = 0; for (k = 0; k <= lim; ++k) for (l = 0; l <= lim; ++l) ans = (ans + F(N, n, k, l)) % MOD; printf("%ld", ans); fclose(stdin);fclose(stdout); return 0;}

 

转载于:https://www.cnblogs.com/hsuppr/archive/2013/06/03/3115421.html

你可能感兴趣的文章
eclipse中server location为灰色,不能修改
查看>>
shift and算法
查看>>
MongoDB数据库导出导入迁移
查看>>
观察者模式
查看>>
201521123097《Java程序设计》第五周学习总结
查看>>
云瓣影音网站&&微信端(已开源)
查看>>
C++入门篇十二
查看>>
冲刺周期二--站立会议03
查看>>
UITableViewCell高度自适应变化
查看>>
python 类变量与实例变量,可变对象与不可变对象的实践
查看>>
下载devc++和codeblocks记录
查看>>
C++ 修改 Windows Service【转】
查看>>
串口接线
查看>>
python_paramiko模块
查看>>
C#一个FTP操作封装类FTPHelper
查看>>
Linux运维基础入门(二):网络基础知识梳理02
查看>>
你所不知道的 CSS 阴影技巧与细节
查看>>
MyBatis框架的使用及源码分析(三) 配置篇 Configuration
查看>>
20172319 实验三《查找与排序》实验报告
查看>>
构造函数的继承
查看>>