每次合并两个数,做过石子合并的人都能看出来是区间 dp。

设状态 \(dp_{i,j}\) 表示区间 \([i,j]\) 中合并为一个数的所有情况之和。

那么我们就可以枚举断点 \(k\):

  1. \(b_k\) 为 \(+\):\([i,k]\) 中的每种情况都要和 \([k+1,j]\) 中的每种情况产生一个贡献,所以总贡献为 \(dp_{i,k}\times(j-k-1)!+dp_{k+1,j}\times(k-i)!\)。
  2. \(b_k\) 为 \(-\):同 1 理,贡献为 \(dp_{i,k}\times(j-k-1)!-dp_{k+1,j}\times(k-i)!\)。
  3. \(b_k\) 为 \(*\):同 1 理,贡献为 \(dp_{i,k}\times dp_{k+1,j}\)。

由于可以穿插,每个贡献还要乘上 \(C_{j-i-1}^{k-i}\)。

时间复杂度 \(O(n^2t)\)。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll p=1e9+7;
int n,a[105];
char b[105];
ll jc[105],inv[105];
ll dp[105][105];
ll qpow(ll x,int y){
ll re=1;
while(y){
if(y&1) re=re*x%p;
x=x*x%p;
y>>=1;
}return re;
}ll C(int x,int y){
return jc[x]*inv[y]%p*inv[x-y]%p;
}void zjy_zkal(){
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
cin>>dp[i][i];
cin>>(b+1);
for(int l=2;l<=n;l++)
for(int i=1,j=l;j<=n;i++,j++)
for(int k=i;k<j;k++){
ll add=0;
if(b[k]=='*')
add=dp[i][k]*dp[k+1][j]%p;
if(b[k]=='+')
add=(dp[i][k]*jc[j-k-1]+dp[k+1][j]*jc[k-i])%p;
if(b[k]=='-')
add=(dp[i][k]*jc[j-k-1]-dp[k+1][j]*jc[k-i])%p;
dp[i][j]=(dp[i][j]+add*C(j-i-1,k-i))%p;
}
cout<<(dp[1][n]+p)%p<<"\n";
}int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
jc[0]=1;
for(ll i=1;i<=100;i++)
jc[i]=jc[i-1]*i%p;
inv[100]=qpow(jc[100],p-2);
for(ll i=100;i;i--)
inv[i-1]=inv[i]*i%p;
while(cin>>n) zjy_zkal();
return 0;
}

[HDU5396] Expression 题解的更多相关文章

  1. hdu5396 Expression

    Expression Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  2. ACM学习历程—HDU5396 Expression(递推 && 计数)

    Problem Description Teacher Mai has n numbers a1,a2,⋯,an and n−1 operators("+", "-&qu ...

  3. hdu5396 Expression 区间dp +排列组合

    #include<stdio.h> #include<string> #include<map> #include<vector> #include&l ...

  4. [hdu5396 Expression]区间DP

    题意:给一个表达式,求所有的计算顺序产生的结果总和 思路:比较明显的区间dp,令dp[l][r]为闭区间[l,r]的所有可能的结果和,考虑最后一个符号的位置k,k必须在l,r之间,则l≤k<r, ...

  5. codeforcess水题100道

    之所以在codeforces上找这100道水题的原因是为了巩固我对最近学的编程语言的掌握程度. 找的方式在codeforces上的PROBLEMSET中过的题最多的那些题里面出现的最前面的10个题型, ...

  6. 《LeetBook》leetcode题解(10): Regular Expression Matching——DP解决正则匹配

    我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...

  7. LeetCode题解——Regular Expression Matching

    题目: 正则表达式的匹配,'.'能匹配任何一个字符,'*'之前必须有一个字符,两个结合起来表示之前那个字符出现0到无穷次. 解法: 一定要注意'*'必须结合前面的字符一起使用. 代码: class S ...

  8. [LeetCode]题解(python):010-Regular Expression Matching

    题目来源: https://leetcode.com/problems/regular-expression-matching/ 题意分析: 这道题目定义了两个正则表达式规则.’.’代表任意字符,’* ...

  9. PAT甲题题解-1130. Infix Expression (25)-中序遍历

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789828.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  10. HDU 6342 Expression in Memories(模拟)多校题解

    题意:给你一个规则,问你写的对不对. 思路:规则大概概括为:不能出现前导零,符号两边必须是合法数字.我们先把所有问号改好,再去判断现在是否合法,这样判断比一边改一边判断容易想. 下面的讲解问号只改为+ ...

随机推荐

  1. springgateway 路由转发

    有些情况下,我们希望不直接访问后端地址,这个时候可以通过springgateway网关进行处理.下面只是一个简单的例子. 至于URL,变化,我们可以通过编写程序逻辑来实现. 实现步骤: 1.新建项目 ...

  2. 《JavaScript 模式》读书笔记(7)— 设计模式2

    这一篇我们主要来学习装饰者模式.策略模式以及外观模式.其中装饰者模式稍微复杂一点,大家认真阅读,要自己动手去实现一下哦. 四.装饰者模式 在装饰者模式中,可以在运行时动态添加附加功能到对象中.当处理静 ...

  3. android emulator 设置代理

    android emulator 设置代理 由于开发的 app 需要访问 google 服务,那么跑虚拟机的时候就需要设置网络代理,试了几种方法都没成功,记录一下 因为已知我开发电脑的代理地址和端口, ...

  4. SafeHandle 和 Dispose

    SafeHandle 和 Dispose 这是从 https://www.cnblogs.com/zeroone/p/3708112.html 复制过来的,原文的格式不够好,重新排版一下. SafeH ...

  5. Mapstruct使用时报Unknown property xxx in result type xxx. Did you mean null

    0.背景 使用mapstruct时出现: Unknown property "xxx" in result type xxx. Did you mean "null&qu ...

  6. Qt编写地图综合应用3-省市区域图

    一.前言 省市区域图也可以叫省市轮廓图,就是将每个省份.市区的边界区域变成轮廓展示,只是个大概的轮廓,和真是的地图基本一致,毕竟都是一个个点堆起来的,可能会有很小很小的误差,之前做大屏系统中间那个中国 ...

  7. [转]在Eclipse整合Maven3.6.3插件导入maven项目并编译时,控制台提示No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

    近日有同事遇到在编译Maven项目时出现[ERROR] No compiler is provided in this environment. Perhaps you are running on ...

  8. 「规则类怪谈」塔 - (preview)

      前段时间,大概五六月份,我很喜欢规则类怪谈.颓废的时候读了一大堆质量参差不齐的作品,试着编了一个世界观然后开写.咕着咕着磨到现在,至少情节大概成形了.最大的阻力在于物理规则的完备性和自洽性,为什么 ...

  9. 「V 曲闲谈」《宠儿》——谁凌迟着梦想家

      反正个人博客啥都能写是吧.(   严格来说,这并不是对歌曲或者 PV 的解析,仅仅是记录这首歌带给我的一些感触.   参考:狐狸座 ver & 艾尔法 ver.   按照简介,歌曲的内容似 ...

  10. CDS标准视图:分配到任务清单的维护包数据 I_PckgTaskListOpalLocData

    视图名称:分配到任务清单的维护包数据 I_PckgTaskListOpalLocData 视图类型:基础 视图代码: 点击查看代码 @AbapCatalog.sqlViewName: 'IPCKTLO ...