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

/*** Problem:Party* Author:Shun Yao* Time:2013.5.30* Result:Accepted* Memo:DP*/#include <cstring>
#include <cstdlib>
#include <cstdio>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

[ZJOI2008]生日聚会相关推荐

  1. bzoj 1037: [ZJOI2008]生日聚会Party

    1037: [ZJOI2008]生日聚会Party Description 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算 坐成一排 ...

  2. [ZJOI2008]生日聚会Party

    1037: [ZJOI2008]生日聚会Party Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2907  Solved: 1727 [Submi ...

  3. bzoj1037[ZJOI2008]生日聚会Party dp

    [ZJOI2008]生日聚会Party Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2832  Solved: 1674 [Submit][Sta ...

  4. P2592 [ZJOI2008]生日聚会(dp)

    P2592 [ZJOI2008]生日聚会(dp) dp,关键是如何表示男女差的状态. 因此设dp(i,j,k,l)dp(i,j,k,l)dp(i,j,k,l)表示用iii个男生,jjj个女生,男生与女 ...

  5. 1037: [ZJOI2008]生日聚会Party

    1037: [ZJOI2008]生日聚会Party Time Limit: 10 Sec   Memory Limit: 162 MB Submit: 2102   Solved: 1246 [ Su ...

  6. P2592 [ZJOI2008]生日聚会

    题目描述 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算坐成一排玩游戏.为了游戏不至于无聊,就座的方案应满足如下条件: 对于任意连续 ...

  7. bzoj1037 [ZJOI2008]生日聚会Party 插数dp

    这个题首先要认清楚任意一个区间差不超过k个怎么理解 看到k一般想的是装压,但如果是状压的思路的话,就需要前k个满足某种条件,于是有可能会猜到前k个满足非全0或1,但这是显然错误的 由于仅仅考虑前k个并 ...

  8. ZJOI2008 生日聚会

    传送门 这道题很明显是DP.不过一开始我错误的以为是区间DP--但是并不是这样.因为区间DP它需要满足区间的情况是确定的,而这道题并不是确定的情况,所以不是区间DP. 重新考虑,设dp[i][j][p ...

  9. BZOJ 1037 [ZJOI2008]生日聚会Party(单调DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1037 [题目大意] 现在有n个男生,m个女生排成一行,要求不存在一个区间男女之差大于k ...

  10. BZOJ1037洛谷P2592 [ZJOI2008]生日聚会

    四重循环大模拟 我们考虑f[i][j][k][e]表示前i个人,有j个男生,女生个数即为i-j,任意一段中男生最多比女生多k个,女生比男生最多多e个, 那么当前状态可以转移到 1.在j<n的情况 ...

最新文章

  1. 优雅的使用 ThreadLocal
  2. 张亚勤:新范式、新架构和新模态突破传统算力,推动物理世界走向数字化
  3. Golang面向过程编程-函数
  4. 网站图片优化需要注意哪些方面?
  5. 【昇腾学院】昇腾AI处理器软件栈--框架管理器(Framework)离线模型生成
  6. Flume案例Ganglia监控
  7. Java分布式锁看这篇就够了,java基础面试笔试题
  8. 为什么c语言2的n次方减一,计算2的N次方........有什么错吗?
  9. Python学习之路-基础知识1
  10. 后PC时代的桌面虚拟化解决方案——VMware View 5
  11. Delphi2007企业版破解
  12. Centos 远程桌面管理工具
  13. 龙之谷手游微信连接授权服务器失败,龙之谷手游ios微信授权失败怎么办_龙之谷手游ios微信授权失败解决办法-66街机网...
  14. 【平面几何】点线距离与位置关系
  15. arcgis双标准纬线等角圆锥投影_常用地图投影之圆锥投影
  16. C语言进阶:程序中的三国天下 考研数据结构
  17. ##模拟图灵机 XN*2的运算
  18. Flash按键响应-键码值表
  19. 【Leetcode】1137. 第 N 个泰波那契数
  20. html页面自适应是什么意思,什么是自适应网页设计

热门文章

  1. HelloMybatis
  2. 不同品牌机中的“Fn”按钮功能定位汇总
  3. 变量的数据类型和类型转换(二)
  4. sklearn之KNN详解+GridSearchCV使用方法
  5. 《设计模式之禅》--设计模式大PK
  6. 利用Hibernate进行数据库的增删改查
  7. python 一个包中的文件调用另外一个包文件 实例
  8. Silverlight 2 跨域访问控件与WebService的资料整理
  9. 小心中中国移动“短号集群网”的招
  10. 【排序算法】希尔排序-常规排序