1 -> {}

2 -> []

3 -> ()

\(f[d][a][b][c]\)

表示 \([i * 2 - 1, j * 2]\) 这段区间 深度为 d

\(1\) 有 \(a\) 个, \(2\) 有 \(b\) , \(3\) 有 \(c\) 个

初始状态

\(f[1][0][0][1] = 1;\)

\(f[1][0][1][0] = 1;\)

\(f[1][1][0][0] = 1;\)

操作1:用 () 括起来

需满足: \(a = 0\) 且 \(b = 0\)

\(f[d][a][b][c] += f[d - 1][a][b][c - 1]\)

操作2:用 [] 括起来

需满足:\(a = 0\)

\(f[d][a][b][c] += f[d - 1][a][b - 1][c]\)

操作3:用 {} 括起来

\(f[d][a][b][c] += f[d - 1][a - 1][b][c]\)

合并 (枚举第一个括号)

#include <cstdio>
#include <iostream>
using namespace std;
const int S = 35, L = 11, P = 11380;
int L1, L2, L3, D, f[S][L][L][L], s[S][L][L][L];
int main() {
scanf("%d%d%d%d", &L1, &L2, &L3, &D);
s[0][0][0][0] = f[0][0][0][0] = 1;
for (int d = 1; d <= D; d++) {
for (int a = 0; a <= L1; a++) {
for (int b = 0; b <= L2; b++) {
for (int c = 0; c <= L3; c++) {
if (a) (f[d][a][b][c] += f[d - 1][a - 1][b][c]) %= P;
else if(b) (f[d][a][b][c] += f[d - 1][a][b - 1][c]) %= P;
else if(c) (f[d][a][b][c] += f[d - 1][a][b][c - 1]) %= P; for (int a1 = 0; a1 <= a; a1++) {
for (int b1 = 0; b1 <= b; b1++) {
for (int c1 = 0; c1 <= c; c1++) {
if (a1 + b1 + c1 == 0) continue;
if (a1 + b1 + c1 == a + b + c) continue;
if (a1) {
if (d >= 2) (f[d][a][b][c] += s[d - 2][a1 - 1][b1][c1] * f[d][a - a1][b - b1][c - c1]) %= P;
(f[d][a][b][c] += f[d - 1][a1 - 1][b1][c1] * s[d][a - a1][b - b1][c - c1]) %= P;
} else if (b1) {
if (d >= 2) (f[d][a][b][c] += s[d - 2][a1][b1 - 1][c1] * f[d][a - a1][b - b1][c - c1]) %= P;
(f[d][a][b][c] += f[d - 1][a1][b1 - 1][c1] * s[d][a - a1][b - b1][c - c1]) %= P;
} else {
if (d >= 2) (f[d][a][b][c] += s[d - 2][a1][b1][c1 - 1] * f[d][a - a1][b - b1][c - c1]) %= P;
(f[d][a][b][c] += f[d - 1][a1][b1][c1 - 1] * s[d][a - a1][b - b1][c - c1]) %= P;
}
}
}
}
s[d][a][b][c] = (s[d - 1][a][b][c] + f[d][a][b][c]) % P;
} }
}
}
printf("%d\n", f[D][L1][L2][L3]);
return 0;
}

AcWing 317. 陨石的秘密的更多相关文章

  1. Genotype&&陨石的秘密

    Genotype: Genotype 是一个有限的基因序列.它是由大写的英文字母A-Z组成,不同的字母表示不同种类的基因.一个基因可以分化成为一对新的基因.这种分化被一个定义的规则集合所控制.每个分化 ...

  2. poj[1187][Noi 01]陨石的秘密

    Description 公元11380年,一颗巨大的陨石坠落在南极.于是,灾难降临了,地球上出现了一系列反常的现象.当人们焦急万分的时候,一支中国科学家组成的南极考察队赶到了出事地点.经过一番侦察,科 ...

  3. POJ 1187 陨石的秘密 (线性DP)

    题意: 公元11380年,一颗巨大的陨石坠落在南极.于是,灾难降临了,地球上出现了一系列反常的现象.当人们焦急万分的时候,一支中国科学家组成的南极考察队赶到了出事地点.经过一番侦察,科学家们发现陨石上 ...

  4. [POJ1187] 陨石的秘密

    问题描述 公元11380年,一颗巨大的陨石坠落在南极.于是,灾难降临了,地球上出现了一系列反常的现象.当人们焦急万分的时候,一支中国科学家组成的南极考察队赶到了出事地点.经过一番侦察,科学家们发现陨石 ...

  5. 【POJ1187】陨石的秘密

    题目大意: 定义一个串:只含有 '( )','[ ]','{ }',3种(6个)字符. 定义 SS 串: 空串是SS表达式. 若A是SS表达式,且A串中不含有中括号和大括号,则(A)是SS表达式. 若 ...

  6. 题解 【POJ1187】 陨石的秘密

    解析 考虑到数据范围,其实我们可以用记搜. 设\(f[a][b][c][d]\)表示还剩\(a\)个'{}',\(b\)个"[]",\(c\)个"()",深度\ ...

  7. 别人整理的DP大全(转)

    动态规划 动态规划 容易: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ...

  8. dp题目列表

    此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...

  9. dp式子100个……

    1.        资源问题1-----机器分配问题F[I,j]:=max(f[i-1,k]+w[i,j-k]) 2.        资源问题2------01背包问题F[I,j]:=max(f[i- ...

随机推荐

  1. mysql一些好的问题

    一."N叉树"的N值在MySQL中是可以被人工调整吗? 1, 通过改变key值来调整N叉树中非叶子节点存放的是索引信息,索引包含Key和Point指针.Point指针固定为6个字节 ...

  2. synchronized 到底该不该用?

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...

  3. Kafka高性能揭秘:sequence IO、PageCache、SendFile的应用详解

    大家都知道Kafka是将数据存储于磁盘的,而磁盘读写性能往往很差,但Kafka官方测试其数据读写速率能达到600M/s,那么为什么Kafka性能会这么高呢? 首先producer往broker发送消息 ...

  4. 分布式监控系统之Zabbix 使用SNMP、JMX信道采集数据

    前文我们了解了zabbix的被动.主动以及web监控相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14024212.html:今天我们来了解下zabb ...

  5. CorelDRAW 2017提示已安装另一版本导致安装失败的解决办法

    Coreldraw提示"由于您已安装了另一版本,因此无法安装本产品.要安装本产品,您必须首先卸载现有版本"的情况在Coreldraw X8及Coreldraw 2017上都存在,下 ...

  6. 带你入门Camtasia Studio录像机软件

    Camtasia软件和其他录制软件不同,不论是编辑功能还是制作功能还是其他功能方面都远远高于其他录制软件.那这边我们可以一起了解一下基础软件功能. 首先,我们在电脑端安装了软件以后,进行实际操作.在操 ...

  7. 简单实用的Boom 3D基础入门教程分享

    Boom 3D可以很大限度的弥补声音设备或是环境的不足,满足您更加高级的声学体验.Boom 3D用简单明了的方式帮助您设计声音,即使您不是专业的声音编辑,也可以达到专业相似的效果. 打开Boom 3D ...

  8. laravel数据填充

    post表有这2个字段 填充20条数据, 执行 php artisan tinker 执行预览 factory(App\Post::class,20)->make(); 插入数据库 factor ...

  9. python基础之操作列表

    遍历元素 magicians = ['alice','david','carolina'] for magician in magicians: print(magician) magicians = ...

  10. 红外遥控接收发射原理及ESP8266实现

    红外遥控是利用近红外光进行数据传输的一种控制方式.近红外光波长0.76um~1.5um ,红外遥控收发器件波长一般为 0.8um~0.94um ,具有传输效率高,成本低,电路实现简单,抗干扰强等特点, ...