[ZJOI2008]生日聚会Party

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 2832  Solved: 1674
[Submit][Status][Discuss]

Description

  今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party。 hidadz带着朋友们来到花园中,打算
坐成一排玩游戏。为了游戏不至于无聊,就座的方案应满足如下条件:对于任意连续的一段,男孩与女孩的数目之
差不超过k。很快,小朋友便找到了一种方案坐了下来开始游戏。hidadz的好朋友Susie发现,这样的就座方案其实
是很多的,所以大家很快就找到了一种,那么到底有多少种呢?热爱数学的hidadz和她的朋友们开始思考这个问题
…… 假设参加party的人中共有n个男孩与m个女孩,你是否能解答Susie和hidadz的疑问呢?由于这个数目可能很
多,他们只想知道这个数目除以12345678的余数。

Input

  仅包含一行共3个整数,分别为男孩数目n,女孩数目m,常数k。

Output

  应包含一行,为题中要求的答案。

Sample Input

1 2 1

Sample Output

1

HINT

n , m ≤ 150,k ≤ 20。

Source

题解:
  f(i,j,k,l)表示一段人中共有i个男孩j个女孩,且这段人的后缀中男孩与女孩的个数之差最大值为k,
  女孩与男孩的个数之差最大值为l的方案总数
 1 #include<cstring>
 2 #include<cmath>
 3 #include<algorithm>
 4 #include<iostream>
 5 #include<cstdio>
 6
 7 #define ll long long
 8 #define mod 12345678
 9 using namespace std;
10 inline int read()
11 {
12     int x=0,f=1;char ch=getchar();
13     while(ch>'9'||ch<'0'){if (ch=='-') f=-1;ch=getchar();}
14     while(ch<='9'&&ch>='0'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
15     return x*f;
16 }
17
18 int n,m,k,ans;
19 int f[303][153][23][23];
20
21 int main()
22 {
23     n=read(),m=read(),k=read();
24     f[0][0][0][0]=1;
25     for(int i=0;i<n+m;i++)
26         for (int j=0;j<=n;j++)
27             for (int x=0;x<=k;x++)
28                 for (int y=0;y<=k;y++)
29                     if (f[i][j][x][y])
30                     {
31                         if (x+1<=k&&j+1<=n) (f[i+1][j+1][x+1][max(y-1,0)]+=f[i][j][x][y])%=mod;
32                           if (y+1<=k&&i+1-j<=m) (f[i+1][j][max(x-1,0)][y+1]+=f[i][j][x][y])%=mod;
33                     }
34     for (int i=0;i<=k;i++)
35         for (int j=0;j<=k;j++)
36             ans=(ans+f[n+m][n][i][j])%mod;
37     printf("%d\n",ans);
38 }

转载于:https://www.cnblogs.com/fengzhiyuan/p/8142796.html

bzoj1037[ZJOI2008]生日聚会Party dp相关推荐

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

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

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

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

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

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

  4. [ZJOI2008]生日聚会Party

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

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

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

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

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

  7. 【BZOJ1037】【codevs1410】生日聚会,DP

    传送门1 传送门2 思路: 挺简单的DP 刚开始有点脑残,从后向前转移怎么写都写不对 改成从前向后就A了-- f[i][j][p][q]表示前面有i个男孩,j个女孩,男女孩从当前DP的位置为起点,最大 ...

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

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

  9. P2592 [ZJOI2008]生日聚会

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

最新文章

  1. jquery实现表格的多行删除
  2. VC批量拷贝,移动,删除文件---SHFileOperation
  3. c语言数组方式实现静态循环队列
  4. 经典Android开发教程!这些新技术你们都知道吗?年薪超过80万!
  5. mysql临时表 清空_在数据库中临时表什么时候会被清除呢
  6. Spring事务—方法调用事务回滚
  7. Python AES
  8. 性能测试之三——资源监控的方法
  9. Spring security3入门(转)
  10. udp聊天室的界面实现
  11. 建筑能源管理系统主要有什么功能?
  12. Android下载文件提示文件不存在。。。 java.io.FileNotFoundException
  13. 用WIN PE通过修改系统注册表修复因盘符错乱而导致系统无法启动问题
  14. 雷电模拟器 手机模拟器 安装 连接
  15. Node.js实战(Node.js in Action)书中的代码实现
  16. 大数据营销中的尿布和啤酒
  17. 爱普生Epson Stylus SX235W 一体机驱动
  18. Absurdity and wonder: Heath Robinson at home
  19. 提问的智慧 How To Ask Questions The Smart Way
  20. RMAN 工具 恢复数据库

热门文章

  1. radiobutton 设置单选项目标
  2. 体验 CodeSmith
  3. Trying to embed a platform view but the PrerollContext does not support embedding
  4. Flutter中文本输入框TexeFieldr键盘样式TextInputType总结TexeField设置不可编辑
  5. Vue-tools.crx 及安装常见问题解决
  6. 洛谷 P1141 01迷宫(dfs)
  7. 关于Js下拉导航的解释
  8. WPF捕获未处理的异常
  9. 模块的封装性分析-读书笔记
  10. CIO应用商业智能技术系统的重构思考