Description

Input

Output

Sample Input

样例一:3 2 1
样例二:15 6 4

Sample Output

样例一:10
样例二:458177764

Data Constraint

Hint

样例一解释:

Solution

  • 对于这种求方案数的问题,我们考虑DP。

  • 我们考虑逐个位置填区间,比如说做到了第 iii 个容器。

  • 那么在填了的区间(设共有 j" role="presentation" style="position: relative;">jjj 个)中,肯定有些已经闭合了,有些尚未闭合(设为 kkk 个)。

  • 那么我们就得到了状态 f[i][j][k]" role="presentation" style="position: relative;">f[i][j][k]f[i][j][k]f[i][j][k] 表示此时的方案数,显然 f[0][0][0]=1f[0][0][0]=1f[0][0][0]=1 。

  • 如何转移呢?我们想想这时我们可以做什么,闭合某些尚未闭合的区间,开启新的未闭合的区间。

  • 于是我们枚举两个值 dec,incdec,incdec,inc 分别表示此时闭合区间的数量和将要开启新区间的数量。

  • 由于这 KKK 个区间是互不相同的,我们要需要处理出其顺序带来的方案数。

  • 那么显然有转移式:

    f[i][j][k]∗Ckdec∗Cj+incinc=>f[i+1][j+inc][k−dec+inc]" role="presentation">f[i][j][k]∗Cdeck∗Cincj+inc=>f[i+1][j+inc][k−dec+inc]f[i][j][k]∗Ckdec∗Cj+incinc=>f[i+1][j+inc][k−dec+inc]

    f[i][j][k]*C_k^{dec}*C_{j+inc}^{inc}=>f[i+1][j+inc][k-dec+inc]

  • 其中 CdeckCkdecC_k^{dec} 表示在 kkk 个未闭合的区间中选择 dec" role="presentation" style="position: relative;">decdecdec 来闭合增加的组合方案。

  • 而 Cincj+incCj+incincC_{j+inc}^{inc} 表示新增的 incincinc 个区间在总共的 j+incj+incj+inc 个区间中的排列顺序增加的组合方案。

  • 而每个容器的容量为 TTT 的限制就相当于在任意时刻未闭合的区间数量不超过 T" role="presentation" style="position: relative;">TTT 。

  • 答案即为 f[n+1][k][0]f[n+1][k][0]f[n+1][k][0] 。

  • 时间复杂度 O(NK4)O(NK4)O(NK^4) 。

Code

#include<cstdio>
#include<cctype>
using namespace std;
typedef long long LL;
const int N=45,mo=1011110011;
int n,k,T;
int f[N][N][N],c[N][N];
inline int read()
{int X=0,w=0; char ch=0;while(!isdigit(ch)) w|=ch=='-',ch=getchar();while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar();return w?-X:X;
}
int main()
{freopen("container.in","r",stdin);freopen("container.out","w",stdout);n=read(),k=read(),T=read();for(int i=0;i<N;i++) c[i][0]=1;for(int i=1;i<N;i++)for(int j=1;j<=i;j++) c[i][j]=(c[i-1][j]+c[i-1][j-1])%mo;f[0][0][0]=1;for(int i=0;i<=n;i++)for(int j=0;j<=k;j++)for(int l=0;l<=j && l<=T;l++)if(f[i][j][l])for(int inc=0;j+inc<=k;inc++)for(int dec=0;dec<=l;dec++)if(l-dec+inc<=T)f[i+1][j+inc][l-dec+inc]=(f[i+1][j+inc][l-dec+inc]+(LL)f[i][j][l]*c[l][dec]%mo*c[j+inc][inc]%mo)%mo;printf("%d",f[n+1][k][0]);return 0;
}

JZOJ 5192. 【NOI2017模拟7.2】容器相关推荐

  1. 手工模拟实现 Docker 容器网络!

    大家好,我是飞哥! 如今服务器虚拟化技术已经发展到了深水区.现在业界已经有很多公司都迁移到容器上了.我们的开发写出来的代码大概率是要运行在容器上的.因此深刻理解容器网络的工作原理非常的重要.只有这样将 ...

  2. [C++](13)stack queue priority_queue 模拟实现:容器适配器,deque介绍,仿函数详解

    文章目录 使用 stack 栈 queue 队列 priority_queue 优先级队列 什么是容器适配器? deque 容器简单介绍 模拟实现 stack queue priority_queue ...

  3. Deli Deli(模拟,map容器)

    Problem Description Mrs. Deli is running the delicatessen store "Deli Deli". Last year Mrs ...

  4. [蓝桥杯2018初赛]次数差-模拟,map容器

    题目描述 x星球有26只球队,分别用a~z的26个字母代表.他们总是不停地比赛. 在某一赛段,哪个球队获胜了,就记录下代表它的字母,这样就形成一个长长的串. 国王总是询问:获胜次数最多的和获胜次数最少 ...

  5. 浅拷贝+引用计数--写时拷贝---模拟实现string容器

    引用计数 深拷贝 多个对象共享同一份资源时,最后能够保证该资源只被释放一次 应该由哪个对象释放资源? 由最后一个使用该资源的对象去释放 怎么知道一个对象是最后一个使用该资源的对象? 给一个计数,记录使 ...

  6. arm架构linux运行docker失败,armdocker:在x86上模拟运行arm容器

    一.背景 docker 可以在 arm 平台上运行,验证 docker 镜像最直接的方式是在 arm 平台上,但有时候需要在 PC 平台上验证 arm 平台的镜像.本文对此进行介绍. 二.x86依赖环 ...

  7. [jzoj 6093] [GDOI2019模拟2019.3.30] 星辰大海 解题报告 (半平面交)

    题目链接: https://jzoj.net/senior/#contest/show/2686/2 题目: 题解: 说实话这题调试差不多花了我十小时,不过总算借着这道题大概了解了计算几何的基础知识 ...

  8. [JZOJ 5909] [NOIP2018模拟10.16] 跑商(paoshang) 解题报告 (圆方树)

    题目链接: https://jzoj.net/senior/#contest/show/2529/2 题目: 题目背景: 尊者神高达很穷,所以他需要跑商来赚钱 题目描述: 基三的地图可以看做 n 个城 ...

  9. [JZOJ 5911] [NOIP2018模拟10.18] Travel 解题报告 (期望+树形DP)

    题目链接: http://172.16.0.132/senior/#contest/show/2530/1 题目: EZ同学家里非常富有,但又极其的谦虚,说话又好听,是个不可多得的人才.       ...

最新文章

  1. intouch负值显示0_excel 应用中计算结果显示为负数,使负数显示为0应如何操作?...
  2. Linux 日志系统详解
  3. html 表格过滤功能,简单的带排序和过滤功能的jQuery表格插件
  4. 在ubuntu16.04.1配置qemu-img,qemu-nbd
  5. mysql relaylog 慢_MySQL 主从同步延迟的原因及解决办法
  6. mysql 取数据 展示_php mysql_fetch_row逐行获取结果集数据并显示在table表格中
  7. 【BZOJ4818】序列计数(动态规划,生成函数)
  8. 视频|光学3D测量技术原理及应用
  9. java堆空间此许可证无效_关于jvm:Java无法为对象堆错误保留足够的空间
  10. 【扩频通信】基于matlab扩频通信Gold序列特性仿真【含Matlab源码 1522期】
  11. Ubuntu Linux镜像下载
  12. 高通工具过滤_高通QXDM|高通诊断监视工具(Qualcomm QXDM)下载v3.14 官方版 - 欧普软件下载...
  13. 【高频电子线路】[模型]阻抗变换与阻抗匹配(第2章 谐振功率放大器)
  14. Rust任务系统、资源跑图、Rust服务器搜索升级、自动售货机等功能更新
  15. Android 开发中渐变背景的简单使用
  16. python怎么让图片旋转45度_我能把x轴旋转45度吗?试着做温度图
  17. 【Git】工作区、暂存区与版本库
  18. Gym-101173K Key Knocking 思维+贪心
  19. 免费云服务器+免费虚拟主机推荐
  20. 小白怎么快速入门游戏建模软件C4D?

热门文章

  1. Django入门:DoesNotExist: User matching query does not exist.
  2. 现代谱估计:MTM 谐波分析
  3. 如何使用C来扩展python功能。
  4. oracle 一行转多行,oracle 一行变多行
  5. 医疗软件产品核心算法部分说明--转载截取
  6. 【C++】简约的for循环
  7. 能源15A1,A2燃烧学期末试题2018-01-02
  8. HR只在这些时间里看你的简历!
  9. delphi 中的dll编程注意事项
  10. Delphi 与 C/C++ 数据类型对照表