问题描述

公元11380年,一颗巨大的陨石坠落在南极。于是,灾难降临了,地球上出现了一系列反常的现象。当人们焦急万分的时候,一支中国科学家组成的南极考察队赶到了出事地点。经过一番侦察,科学家们发现陨石上刻有若干行密文,每一行都包含5个整数:
1 1 1 1 6
0 0 6 3 57
8 0 11 3 2845
著名的科学家SS发现,这些密文实际上是一种复杂运算的结果。为了便于大家理解这种运算,他定义了一种SS表达式:
1. SS表达式是仅由'{','}','[',']','(',')'组成的字符串。
2. 一个空串是SS表达式。
3. 如果A是SS表达式,且A中不含字符'{','}','[',']',则(A)是SS表达式。
4. 如果A是SS表达式,且A中不含字符'{','}',则[A]是SS表达式。
5. 如果A是SS表达式,则{A}是SS表达式。
6. 如果A和B都是SS表达式,则AB也是SS表达式。

例如
()(())[]
{()[()]}
{{[[(())]]}}
都是SS表达式。

()([])()
[()
不是SS表达式。

一个SS表达式E的深度D(E)定义如下:

例如(){()}[]的深度为2。

密文中的复杂运算是这样进行的:
设密文中每行前4个数依次为L1,L2,L3,D,求出所有深度为D,含有L1对{},L2对[],L3对()的SS串的个数,并用这个数对当前的年份11380求余数,这个余数就是密文中每行的第5个数,我们称之为神秘数。
密文中某些行的第五个数已经模糊不清,而这些数字正是揭开陨石秘密的钥匙。现在科学家们聘请你来计算这个神秘数。

输入格式

共一行,4个整数L1,L2,L3,D。相邻两个数之间用一个空格分隔。 (0 <= L1 <= 10,0 <= L2 <= 10,0 <= L3 <= 10,0 <= D <= 30)

输出格式

共一行,包含一个整数,即神秘数。

样例输入

1 1 1 2

样例输出

8

题解

显然是一道动态规划的题目。对于这些变量,设\(f[i][j][k][d]\)表示串中有i个()、j个[]、k个{}、深度不大于d时的方案总数。由定义可知,两个SS串拼在一起也是一个SS串,我们可以借此来进行动态规划。但是,若一个SS串为ABC,在计算时就会将AB+C和A+BC作为两个方案计算在内,但实际上是同一种方案。因此,为了避免重复,可以在动态规划时令一个串强制在最外面加上一个括号(满足要求的最小括号)。所以,首先枚举一个串中有的每种括号的数量,然后把所有括号分成两部分,对答案的贡献即为分成的两个串的乘积。注意取模。

代码

#include <iostream>
#include <cstdio>
using namespace std;
const int mod=11380;
int l1,l2,l3,d,f[12][12][12][32],i,j,k,l,a,b,c;
int main()
{cin>>l1>>l2>>l3>>d;f[0][0][0][0]=1;for(i=0;i<=l1;i++){for(j=0;j<=l2;j++){for(k=0;k<=l3;k++){for(l=1;l<=d;l++){if(i!=0||j!=0||k!=0){int tmp=0;for(a=0;a<k;a++) tmp=(tmp+f[i][j][k-a-1][l]*f[0][0][a][l-1])%mod;for(a=0;a<j;a++){for(b=0;b<=k;b++) tmp=(tmp+f[i][j-a-1][k-b][l]*f[0][a][b][l-1])%mod;}for(a=0;a<i;a++){for(b=0;b<=j;b++){for(c=0;c<=k;c++) tmp=(tmp+f[i-a-1][j-b][k-c][l]*f[a][b][c][l-1])%mod;}}f[i][j][k][l]=tmp;}else f[i][j][k][l]=1;}}}}int ans=0;if(d>0) ans=(f[l1][l2][l3][d]-f[l1][l2][l3][d-1]+mod)%mod;else ans=f[l1][l2][l3][d];cout<<ans<<endl;return 0;
}

转载于:https://www.cnblogs.com/LSlzf/p/10659992.html

[POJ1187] 陨石的秘密相关推荐

  1. POJ1187 陨石的秘密 【题解】 线性DP

    题面:http://poj.org/problem?id=1187 很自然想到设f[i][j][k][d]为i个小括号,j个中括号,k个大括号,深度小于等于d的解. 那么答案自然就是f[i][j][k ...

  2. [恩难到了]陨石的秘密

    [描述] 公元19881231年,一颗巨大的陨石坠落在世界的政治文化中心cs.于是,灾难降临了,地球上出现了一系列反常的现象.当人们焦急万分的时候,一支由cs科学家组成的考察队赶到了出事地点.经过一番 ...

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

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

  4. 【POJ 1187】 陨石的秘密(dp)

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

  5. poj 1187 陨石的秘密

    动态规划 一开始定义为dp[l1][l2][l3][dd],表示用l1个{},l2个[],l3个(),深度为dd的方案数,后来不行.参考别人后,dp[l1][l2][l3][dd]表示深度小于等于dd ...

  6. 【转】别人整理的DP大全

    为什么80%的码农都做不了架构师?>>>    动态规划 动态规划 容易: 1018 , 1050 , 1083 , 1088 , 1125 , 1143 , 1157 , 1163 ...

  7. 《算法竞赛进阶指南》 0x50 动态规划

    题目后面加 ∗*∗ 表示题目过于简单或不具备特征性,不做题解 线性DP AcWing 271. 杨老师的照相排列 811人打卡 AcWing 272. 最长公共上升子序列 778人打卡(∗*∗) Ac ...

  8. POJ的题目分类(两个版本)

    版本一: 简单题 1000A+B Problem 1001Exponentiation 1003 Hangover 1004 Financial Management 1005 I Think I N ...

  9. NOI 题目 试题 目录 信奥 历年

    NOI  题目  试题 目录 信奥 历年 NOI  2018 题目  试题 目录 信奥 历年 第一试   2018年7月18日   08:00-13:00 1.归程  return 2.冒泡排序    ...

最新文章

  1. 为什么倒排索引不采用zlib这样的字典压缩算法——因为没法直接使用啊
  2. 【渝粤教育】广东开放大学 地基与基础 形成性考核 (27)
  3. 面试官:谈谈数据库连接池的原理
  4. python文件处理seek()方法的参数是,在Python中操作文件之seek()方法的使用教程
  5. 大数据思维是企业互联网化的思维内核
  6. java写龟兔赛跑_有关JAVA编写龟兔赛跑的游戏的问题。求助……
  7. python set函数原理,Python之set详解
  8. 为什么淘宝上同样的东西,专卖店比官方旗舰店便宜?
  9. 在centos下安装django
  10. P3372 【模板】线段树 1 区间查询与区间修改
  11. 游戏策划入门教程(1)工具篇
  12. 几款免费开源的企业管理软件
  13. 浅谈DNS协议,DNS协议的作用以及DNS的查询方式,使用DNS做负载均衡
  14. 计算机安全模式什么意思,什么是电脑安全模式 电脑怎么解除安全模式
  15. 泛生子Q2及臻和招股书速读
  16. MacOS连接VPN 提醒 “IPSec共享密钥”丢失。请验证您的设置并尝试重新连接。
  17. UUID太长怎么办?快来试试NanoId(Java版本)
  18. Typewriter text that fits label beforehand
  19. java中的example_mybatis中关于example类详解
  20. EasyRoads3D使用教程

热门文章

  1. win10如何共享打印机_局域网内,办公室USB接口打印机如何共享
  2. arm云服务器虚拟安卓,ARM搭建云手机
  3. 一道经典的面试题:一只公鸡5块钱,一只母鸡3块钱,3只小鸡一块钱,一个农夫用100块钱买100只鸡(编写java程序)...
  4. Android --- 5G网络,android系统开发教程
  5. 投资组合的方差公式推导
  6. 初学larval 第一篇(大神绕道哦,针对新手友好的一篇)
  7. mysql 1058_MySQL数据库之mysql启动服务报1058错误的解决方法
  8. Spark Steaming快速入门
  9. 如若,我是这样的女子
  10. 连接mysql提示不允许连接_用数据库工具连接mysql出现不允许连接的解决办法