BZOJ & Luogu


老师说是背包?并没看出来QAQ

设f[i][j][o][p]表示已经选了i个人,j个男生,男生比女生最多多o个,女生比男生最多多p个时的方案数

两种转移:

if(j+<=n&&o+<=k) (f[i+][j+][o+][max(p-,)]+=f[i][j][o][p])%=mod;
if(i+-j<=m&&p+<=k) (f[i+][j][max(o-,)][p+]+=f[i][j][o][p])%=mod;

第一种是说:如果男生人数+1小于n且新的差值(就是加了一个男生后)<=k,就可以转移;

第二种是说:如果女生人数(女生人数=总人数i - 男生人数j)+1小于n且新的差值(就是加了一个女生后)<=k,就可以转移;

#include<cstdio>
#include<iostream>
#define R register int
using namespace std;
const int N=;
int f[N<<][N][][],n,m,ans,cnt,k;
const int mod=;
signed main() {
scanf("%d%d%d",&n,&m,&k);
f[][][][]=;
for(R i=;i<=n+m;++i) for(R j=;j<=n;++j)
for(R o=;o<=k;++o) for(R p=;p<=k;++p) if(f[i][j][o][p]) {
if(j+<=n&&o+<=k) (f[i+][j+][o+][max(p-,)]+=f[i][j][o][p])%=mod;
if(i+-j<=m&&p+<=k) (f[i+][j][max(o-,)][p+]+=f[i][j][o][p])%=mod;
}
for(R i=;i<=k;++i) for(R j=;j<=k;++j) (ans+=f[n+m][n][i][j])%=mod;
printf("%d\n",ans);
}

2019.3.14

题解 BZOJ 1037 & Luogu P2592 [ZJOI2008]生日聚会的更多相关文章

  1. P2592 [ZJOI2008]生日聚会

    容易发现已经结束掉的一个子串只要合法就对后面没有影响,所以可以令 \(f_{i,j,p,q}\) 表示前 \(i+j\) 个人有 \(i\) 个男孩,\(j\) 个女孩,所有后缀中男孩最多比女孩多 \ ...

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

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

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

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

  4. 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, ...

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

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

  6. bzoj千题计划125:bzoj1037: [ZJOI2008]生日聚会Party

    http://www.lydsy.com/JudgeOnline/problem.php?id=1037 一个区间是否满足 任意连续的一段,男孩与女孩的数目之差不超过k, 取决于男孩与女孩数目之差的最 ...

  7. 【BZOJ1037】[ZJOI2008]生日聚会(动态规划)

    [BZOJ1037][ZJOI2008]生日聚会(动态规划) 题面 BZOJ 洛谷 题解 假设前面的都合法,但是在加完当前的最后一个人之后变得不合法了,那么意味着一定有着一个后缀不合法.把男生看成\( ...

  8. BZOJ1037 [ZJOI2008]生日聚会Party 【DP】

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

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

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

随机推荐

  1. JAVA-三大语句(选择语句、条件语句、循环语句)

    跳出指定的for循环体,和goto很像 1 K:for(int i=0;i<3;i++){//给这个for循环体取一个名字为K 2 for(int j=0;j<3;j++){ 3 if(j ...

  2. python的上下文管理器

    直接上代码: f = open('123.txt','w') try: f.write('hello world') except Exception: pass finally: f.close() ...

  3. python做简易记事本

    以下内容参考<辛星tkinter教程第二版>: from tkinter import * from tkinter.filedialog import * from tkinter.me ...

  4. Vue 数组中更新属性值后,视图不更新,等待其他元素更新后会触发的解决办法

    因为 JavaScript 的限制,Vue.js 不能检测到下面数组变化: 直接用索引设置元素,如 vm.items[0] = {}: 修改数据的长度,如 vm.items.length = 0. t ...

  5. LoadRunner监控图表与配置(一) 监控与图表

    1.“Monitoer”菜单-“Online Graphs”-“Open a new graph”打开监视图表列表. 实际上这些监视图表已经在Available Graphs中显示了出来. 2.常用监 ...

  6. Codeforces Gym 101190 NEERC 16 G. Game on Graph(博弈+拓扑)

    Gennady and Georgiy are playing interesting game on a directed graph. The graph has n vertices and m ...

  7. POJ2155 Matrix(二维树状数组||区间修改单点查询)

    Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the i-th row an ...

  8. bzoj 1731 [Usaco2005 dec]Layout 排队布局——差分约束

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1731 对差分约束理解更深.还发现美妙博客:http://www.cppblog.com/me ...

  9. @SpringBootApplication注解分析

    首先我们分析的就是入口类Application的启动注解@SpringBootApplication,进入源码: @Target(ElementType.TYPE) @Retention(Retent ...

  10. JS---设计简易日历

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...