题目描述

  今天是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

题目大意

  • 男生女生排座,任意抓一把上来,男孩与女孩的数目之差都不超过k,求方案数

  • 给的信息很少,输入就三个数,啥也没看出来

题目分析

  • 不妨先想一想从区间长度入手?按常规考虑一下f数组记录区间的起点和终点,那数组存啥?而且求得还是方案数,而且男生女生得分开吧,看样子区间dp也不行
  • (跳过某个神奇的步骤)这么一想,最起码题目的关键信息有了,即男生数,女生数,男生与女生的差,女生和男生的差(均>=0)(两个不一样,混一起显然会让你不知道该放男生还是女生)
  • 令我万万没想到的是,竟然直接开了一个四维数组,然后跑线性dpლ(ٱ٥ٱლ)

代码

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int maxn = 150+10;
const int maxk = 20+5;
const int MOD = 12345678;
int n,m,k,ans;
int dp[maxn][maxn][maxk][maxk];//前两维分别表示男生和女生的个数,后两维分别表示男生比女生多的,女生比男生多的
int main(){
scanf("%d%d%d", &n, &m, &k);
dp[0][0][0][0]=1;
for (int i=0;i<=n;i++)//前i个男生
for (int j=0;j<=m;j++)//前j个女生
for (int k1=0;k1<=k;k1++)
for (int k2=0;k2<=k;k2++){//然后判断能否再放进来男生或女生
if(k1+1<=k) dp[i+1][j][k1+1][max(k2-1,0)]=(dp[i+1][j][k1+1][max(k2-1,0)]+dp[i][j][k1][k2])%MOD;
if(k2+1<=k) dp[i][j+1][max(k1-1,0)][k2+1]=(dp[i][j+1][max(k1-1,0)][k2+1]+dp[i][j][k1][k2])%MOD;
}//这里的max的作用和做过的那个建房子的一样,表示不能小于0
for (int i=0;i<=k;i++){
for (int j=0;j<=k;j++)ans=(ans+dp[n][m][i][j])%MOD;
}
printf("%d",ans);
return 0;
}

最新文章

  1. C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现[转载]
  2. windows 编程中的常见bug
  3. 【Vijos】【1923】漫长的等待
  4. A06_RelativeLayout的属性设置
  5. 系统中断与SA_RESTART
  6. PHP冒泡排序,选择排序,插入排序
  7. Unity目录结构
  8. ioctl函数详细说明
  9. Spring Cloud官方文档中文版-Spring Cloud Config(上)
  10. C语言之成绩转换
  11. CDQ分治 陌上花开(三维偏序)
  12. Filecoin:募资详情和Token分发详情
  13. BZOJ_3261_最大异或和_可持久化trie
  14. asp.net core系列 60 Ocelot 构建服务认证示例
  15. 前端入门11-JavaScript语法之数组
  16. luogu3385 负环 (spfa)
  17. 通过lua栈了解lua与c的交互
  18. k-means 图像分割
  19. C# 保证数据长度相同
  20. 2012Hulu校园招聘笔试题

热门文章

  1. 第八届蓝桥杯JavaB组国(决)赛真题
  2. java实现黄金分割数
  3. java实现第四届蓝桥杯快速排序
  4. Android9.0配置charles的https抓包
  5. (易忘篇)java基本语法难点3
  6. 最新 iOS 框架整体梳理(二)
  7. 【个人博客 hexo】一个小时就搭好属于自己的博客
  8. 在scrapy的spiders文件中设置请求时间间隔
  9. ServiceStack.Redis 5.8 版本去掉每小时 6000 次访问限制
  10. 0.0---selenium+java自动化基础01---元素定位和操作