Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 3007 Solved: 1795
[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。

神奇的思路,自己没想到pup。。。

f[i][j][x][y]表示前i个人,有j个男生,且男生最多比女生多x个,女生最多比男生多y个

转移的时候用已知刷未知

#include <bits/stdc++.h>
#define rep(i,j,k) for(register int i=j;i<=k;i++)
#define dow(i,j,k) for(register int i=j;i>=k;i--)
#define ez(i,x) for(register int i=h[x];i;i=e[i].n)
#define MP make_pair using namespace std; inline int read(){
register char ch='*';int f=1;
while(!isdigit(ch=getchar())) if(ch=='-') f=-1;register int x=ch-'0';
while(isdigit(ch=getchar())) x=x*10+ch-'0';
return x*f;
} int n,m,k; const int MOD=12345678; int f[305][155][21][21]; int main(){
n=read();
m=read();
k=read();
f[0][0][0][0]=1;
rep(i,0,n+m) rep(j,0,n) rep(x,0,k) rep(y,0,k){
if(f[i][j][x][y]){
if(j+1<=n&&x+1<=k) (f[i+1][j+1][x+1][max(y-1,0)]+=f[i][j][x][y]%MOD)%MOD;
if(i-j+1<=m&&y+1<=k) (f[i+1][j][max(x-1,0)][y+1]+=f[i][j][x][y]%MOD)%MOD;
}
}
int ans=0;
rep(i,0,k) rep(j,0,k) ans+=f[n+m][n][i][j],ans%=MOD;
cout<<ans;
return 0;
}

[BZOJ] 1037 [ZJOI2008]生日聚会的更多相关文章

  1. BZOJ 1037 [ZJOI2008]生日聚会Party

    1037: [ZJOI2008]生日聚会Party Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1583  Solved: 936[Submit][ ...

  2. BZOJ 1037: [ZJOI2008]生日聚会Party( dp )

    dp(i, j, a, b)表示选了i个男生, j个女生, 后缀中男生比女生多a(最多), 女生比男生多b(最多). dp(i+1, j, a+1, max(0, b-1)) += dp(i, j, ...

  3. BZOJ 1037: [ZJOI2008]生日聚会Party [序列DP]

    1037: [ZJOI2008]生日聚会Party Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2249  Solved: 1337[Submit] ...

  4. BZOJ 1037: [ZJOI2008]生日聚会Party 四维DP

    1037: [ZJOI2008]生日聚会Party Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1650  Solved: 971[Submit][ ...

  5. bzoj 1037 [ZJOI2008]生日聚会Party(DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1037 [题意] 一排n男m女,求满足任意连续段男女人数之差不超过k的数目. [思路] ...

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

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

  7. BZOJ 1037: [ZJOI2008]生日聚会Party(区间dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1037 题意: 思路: 四维数组进行dp,dp[i][j][a][b]表示进行到第i个座位时已经有j个 ...

  8. bzoj 1037: [ZJOI2008]生日聚会Party (dp)

    dp,但是要顺推容易点 const mm=; var f:..,..,..,..]of longint; n,m,kk,now,sum,i,j,k1,k2:longint; function max( ...

  9. 【BZOJ】1037: [ZJOI2008]生日聚会Party(递推+特殊的技巧)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1037 看来自己越来越弱了... 这些计数题设计的状态都很巧妙,,自己智商太低QAQ 和矩阵dp做的那 ...

随机推荐

  1. html5 canvas+js实现ps钢笔抠图(速抠图 www.sukoutu.com)

    html5 canvas+js实现ps钢笔抠图(速抠图 www.sukoutu.com)   根据html5 canvas+js实现ps钢笔抠图的实现,aiaito 开发者开发了一套在线抠图工具,速抠 ...

  2. Ruby Time类和Date类

    Time类 更新: 2017/06/23 更新了Data/Time在model模式下的便利方法 更新: 2018/10/12 修改了%Y相关描述防止误解  年月日时分秒,时区    生成  获取当前时 ...

  3. Ubuntu18安装sublime 3

    转自 https://blog.csdn.net/qq_41590417/article/details/80461075 wget -qO - https://download.sublimetex ...

  4. nginx静态资源服务器简单配置

    有时候我们可以把服务器的一些文件放在固定目录以便下载,比如image,css,js等.就可以使用nginx转发静态资源. 参考链接:https://blog.csdn.net/name_is_wl/a ...

  5. 例题3-4 master-mind hints

    下面先附上我的水货代码,,,,一会附上,,,刘大婶给的代码///////3ms #include<stdio.h> #include<string.h> int main() ...

  6. Java-String 类的常用方法

    Java 中 String 类的常用方法 Ⅰ String 类提供了许多用来处理字符串的方法,例如,获取字符串长度.对字符串进行截取.将字符串转换为大写或小写.字符串分割等,下面我们就来领略它的强大之 ...

  7. 01背包(分组) HDOJ 4341 Gold miner

    题目传送门 题意:有n个金矿,每个金矿有抓取的消耗的时间和价值,矿工在原点,问在T时间内能得到的最大的价值 分析:唯一和01背包不同的是金矿可能共线,也就是抓取近的金矿后才能抓后面共线的金矿.这是分组 ...

  8. 题解报告:hdu 1408 盐水的故事

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1408 Problem Description 挂盐水的时候,如果滴起来有规律,先是滴一滴,停一下:然后 ...

  9. 3、InputStream

    package com.io.file; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoun ...

  10. centOS下安装JDK1.8.60,glassfish4.1.1以及MySQL

    一.安装环境 操作系统 Windows7 Enterprise 64位 需要用到的软件 JDK:jdk-8u60-linux-x64.rpm Glassfish: Glassfish4.1.1.zip ...