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

对于30%的数据,n , m ≤ 20;对于100%的数据, n , m ≤ 150,k ≤ 20。

裸dp,f[a,b,c,d]表示有a个女的,b个男的,以最后一个人为右端点的女的最多比男的多c个,男的最多比女的多d个

(你要问我为什么这样表示,为什么第一维不是长度,我只能说Wikioi的云IDE内存不够大,况且我习惯用广度优先搜索,这样表示没有浪费空间,如果第一维是长度,那a<b的那一部分就用不到了,很浪费)

 const
h=;
maxq=***;
type
point=record
a,b,c,d:longint;
end;
var
f:array[..,..,..,..]of longint;
q:array[..maxq]of point;
n,m,k,head,tail,ans:longint; function max(x,y:longint):longint;
begin
if x>y then exit(x);
exit(y);
end; procedure main;
begin
read(n,m,k);
head:=;
tail:=;
fillchar(f,sizeof(f),);
f[,,,]:=;
while head<>tail do
begin
with q[head] do
if (a=n) and (b=m) then ans:=(ans+f[a,b,c,d])mod h
else
begin
if (a<n) and (c<k) then
begin
if f[a+,b,c+,max(,d-)]>h then
begin
q[tail].a:=a+;
q[tail].b:=b;
q[tail].c:=c+;
q[tail].d:=max(,d-);
f[a+,b,c+,max(,d-)]:=;
tail:=tail mod maxq+;
end;
f[a+,b,c+,max(,d-)]:=(f[a+,b,c+,max(,d-)]+f[a,b,c,d])mod h;
end;
if (b<m) and (d<k) then
begin
if f[a,b+,max(,c-),d+]>h then
begin
q[tail].a:=a;
q[tail].b:=b+;
q[tail].c:=max(,c-);
q[tail].d:=d+;
f[a,b+,max(,c-),d+]:=;
tail:=tail mod maxq+;
end;
f[a,b+,max(,c-),d+]:=(f[a,b+,max(,c-),d+]+f[a,b,c,d])mod h;
end;
end;
head:=head mod maxq+;
end;
write(ans);
end; begin
main;
end.

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

  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(递推+特殊的技巧)

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

  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 [题目大意] 现在有n个男生,m个女生排成一行,要求不存在一个区间男女之差大于k ...

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

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

  9. [BZOJ] 1037 [ZJOI2008]生日聚会

    Time Limit: 10 Sec Memory Limit: 162 MB Submit: 3007 Solved: 1795 [Submit][Status][Discuss] Descript ...

随机推荐

  1. trigger,triggerhandler模拟事件

    常用模拟 有时候,需要通过模拟用户操作,来达到单击的效果.例如在用户进入页面后,就触发click事件,而不需要用户去主动单击. 在JQuery中,可以使用trigger()方法完成模拟操作.例如可以使 ...

  2. Ajax--跨域访问的三种方法

    一.什么是跨域 我们先回顾一下域名地址的组成: / script/jquery.js  http:// (协议号) www  (子域名) google (主域名) (端口号) script/jquer ...

  3. Commons JXPath - Extension Functions

    Standard Extension Functions 创建新的对象 JXPathContext context = JXPathContext.newContext(null); Book boo ...

  4. 使用spring+hibernate+atomikos+tomcat构建分布式事务

    本文通过一个demo,介绍如何使用spring+hibernate+atomikos+tomcat构建在一个事务中涉及两个数据源的web应用. demo功能:实现一个能成功提交和回滚的涉及两个数据库数 ...

  5. C#算法基础之插入排序

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. IntelliJ IDEA 13.x 下使用Hibernate + Spring MVC + JBoss 7.1.1

    从2004年开始做.NET到现在.直到最近要做一些JAVA的项目,如果说100个人写一篇关于.NET的文章,估计这10个人写的内容都是一样.但是如果说10个人写Java的文章,那真的是10个人10种写 ...

  7. 检测SqlServer服务器内存是否瓶颈

    性能监视器临视以下数据: Memory->Available MBytes  可用的内存  windows系统不低于1G,如果可用内存不多,则系统要求sqlserver释放内存 Paging F ...

  8. 给 Android 初学者的 Gradle 知识普及

    给 Android 初学者的 Gradle 知识普及:http://gold.xitu.io/entry/5778f8bd165abd0054b443b0/promote?utm_source=bai ...

  9. JAVA 基础加强学习笔记

    一.面向对象 (一)继承  1.继承的好处: (1) 提高了代码的复用性. (2) 让类与类之间产生了关系,提供了另一个特征多态的前提. 注意: 子类中所有的构造函数都会默认访问父类中的空参数的构造函 ...

  10. 暑假集训(5)第二弹———湫湫系列故事——减肥记I(hdu4508)

    问题描述:舔了舔嘴上的油渍,你陷在身后柔软的靠椅上.在德源大赛中获得优胜的你,迫不及待地赶到“吃到饱”饭店吃到饱.当你 正准备离开时,服务员叫住了你,“先生,您还没有吃完你所点的酒菜.”指着你桌上的一 ...