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. PF_PACKET&&tcpdump

    linux下抓包原理 linux下的抓包是通过注册一种虚拟的底层网络协议来完成对网络设备消息的处理权.当网卡接收到一个网络报文之后,它会遍历系统中所有已经注册的网络协议,当抓包模块把自己伪装成一个网络 ...

  2. openwrt——preinit.sh学习

    boot_hook_init() { local hook="${1}_hook" export -n "PI_STACK_LIST=${PI_STACK_LIST:+$ ...

  3. 解决IE下readonly的Input光标选中的问题

    首先用unselectable="on"解决,但是这种方法bug太多, 屏蔽了input的onblur事件(也就是focus事件在Angualr下),所以只能用click事件来代替 ...

  4. Java中List,Set,Map区别

    在Java开发面试中,面试官最常问到的就是Java集合,免不了要让面试者说出之间的区别,下面博主就对其做了总结. 1.集合与数组的区别 长度区别:数组是固定长度,集合长度可变: 内容区别:数组可以是基 ...

  5. oracle 11g 配置口令复杂度

    oracle 11g 配置口令复杂度 使用ORACLE自带的utlpwdmg.sql脚本来实现 找到本地的utlpwdmg.sql脚本 find / -name utlpwdmg.sql 查看 /ho ...

  6. sqlilab less32-less37

    less-32 过滤了单引号,双引号,斜杠,同时设置数据库为GBK编码,可以考虑宽字节注入, 当设置gbk编码后,遇到连续两个字节,都符合gbk取值范围,会自动解析为一个汉字.用脚本来测试下哪些符合 ...

  7. 深度分析ReentrantLock源码及AQS源码,从入门到入坟,建议先收藏!

    一.ReentrantLock与AQS简介 在Java5.0之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile.Java5.0增加了一种新的机制:Reentra ...

  8. 思维导图软件iMindMap幻灯片设置功能介绍

    我们运用iMindMap演示来播放幻灯片时,有没想过,我怎么改动幻灯片的播放时长,怎么设置它的播放速度这些基本设置呢.下面,本文就告诉你,我们该去哪里修改这些iMindMap幻灯片设置: 我们打开iM ...

  9. 在FL Studio中如何做出渐入的人声效果

    当我们在拿到一段人声并想把它加入歌曲中时,如果我们发现人声没有渐入的效果,直接加入到歌曲里出现会变得很突兀的话,我们就需要用到这篇文章所介绍的方法,给人声加上一个渐入的效果. 1. 找到我们需要处理的 ...

  10. EDI的五个常见挑战以及如何克服这些挑战

    EDI是成功进行供应链管理的一个关键要素.它使企业能够以标准化的电子格式处理与任何交易伙伴的业务数据交换,极大简化了许多曾经繁琐的程序.然而,如果企业正在扩张或处于高速增长阶段,如何充分利用EDI仍然 ...