考虑到此题麻烦了某hust大神&体现出了自己数学能力的欠缺 虽然最近一直比较忙 还是把这题的题解写下来吧

首先看完数据范围后 应该有不少人会反应到是$n^3$的DP 以$F[i][j]$表示从i到j这个区间所有情况之和

然后再枚举中间点$k$从$F[i][k]$到$F[k+1][j]$转移过来 但此题绝不是想到DP就可以了

--------------------------------------------------------------------------------------------------------------------------------

我们假设合并时 左区间所包含的情况为$a1.a2……ap$右区间所包含的情况为 $b1.b2……bq$

对于乘法运算 由于乘法分配率这个性质 直接把两边所有情况之和乘起来就行了

对于加减法运算 左边的区间每个元素出现的次数为q 右边区间每个元素出现的次数为p

进一步 我们可以发现 出现次数p、q其实也就等于(区间长度-1)! (感叹号代表阶乘 不要看错= =)

看起来该做的事情已经做完了 然而如果就这样写完代码 会发现连样例都过不了

---------------------------------------------------------------------------------------------------------------------------------

多想想之后 我们发现这样一个问题 虽然合并时 左右区间都是确定的 然而达到同一个左右区间的方案并不是唯一的

我们先考虑一个比较小的情况 假设左区间通过$c1.c2$这两个操作得到  右区间通过$d1.d2$这两个操作得到

那么我们只要保证同一区间内操作的有序性即可使得最后得到的两个区间分别相同

比如$c1.c2.d1.d2$或$c1.d1.c2.d2$或……

这样可能的情况就有$C_{4}^{2}$种 推广到其他情况便是

C((左区间长度-1)+(右区间长度-1),(左区间长度-1)) (注意到区间长度-1即为合并过程中的操作数)

于是这题便愉快地解决了

#include <bits/stdc++.h>
using namespace std;
const int N=110,MOD=1e9+7;
long long f[N][N],fac[N],c[N][N];
char s[N];
int n;
void prepare()
{fac[0]=1;for(int i=1;i<=100;++i)fac[i]=fac[i-1]*i%MOD;c[0][0]=1;for(int i=1;i<=100;++i){c[i][0]=1;for(int j=1;j<=i;++j)c[i][j]=(c[i-1][j-1]+c[i-1][j])%MOD;}
}
void work()
{for(int i=1;i<=n;++i){scanf("%lld",&f[i][i]);for(int j=i+1;j<=n;++j)f[i][j]=0;}scanf("%s",&s[1]);for(int len=2;len<=n;++len)for(int i=1;i+len-1<=n;++i){int j=i+len-1;for(int k=i;k<j;++k){if(s[k]=='*')f[i][j]+=f[i][k]*f[k+1][j]%MOD*c[j-i-1][k-i];else if(s[k]=='+')f[i][j]+=(f[i][k]*fac[j-k-1]+f[k+1][j]*fac[k-i])%MOD*c[j-i-1][k-i];elsef[i][j]+=(f[i][k]*fac[j-k-1]-f[k+1][j]*fac[k-i])%MOD*c[j-i-1][k-i];f[i][j]%=MOD;}}//for(int i=1;i<=n;++i)//    for(int j=i;j<=n;++j)//        printf("%d %d %lld\n",i,j,f[i][j]);printf("%lld\n",(f[1][n]+MOD)%MOD);}
int main()
{prepare();while(~scanf("%d",&n))work();return 0;
}

转载于:https://www.cnblogs.com/sagitta/p/4741268.html

hdu 5396 Expression相关推荐

  1. 【hdu 6342】Expression in Memories

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把所有的问号都改成'1' 然后会发现只有+0?这种情况 需要把?改成+. 看看这样的0后面的1是不是由问号改过来的就好了.是的话 再 ...

  2. HDU 4652 Dice:期望dp(成环)【错位相减】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4652 题意: 给你一个有m个面的骰子. 两种询问: (1)"0 m n": &qu ...

  3. HDU 4389 - X mod f(x)

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4389 2012多校,第9场,1010 . 问题是,询问区间内 存在多少个 哈沙德数(Harshad ...

  4. 2018 HDU多校第四场赛后补题

    2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...

  5. hdu 4389 囧,打表

    http://acm.hdu.edu.cn/showproblem.php?pid=4389 题意 :一个数能被他各个位数之和整除则符合要求,给L,R,问区间里有多少个数符合要求. 囧,居然打表就能过 ...

  6. 使用Tensor Expression张量表达式处理算子

    使用Tensor Expression张量表达式处理算子 这是TVM中Tensor表达语言的入门教程.TVM使用特定于域的张量表达式来进行有效的内核构造. 本文将演示使用张量表达式语言的基本工作流程. ...

  7. Constant expression required

    switch 语句编译报错Constant expression required  问题:case语句后面必须是常量,使用final修饰  public static final int Notif ...

  8. HDU——1106排序(istringstream的使用、STLvector练习)

    排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  9. hdu 5438 Ponds 拓扑排序

    Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...

最新文章

  1. 给研发工程师的代码质量利器 | SOFAChannel#5 直播整理
  2. iOS 中二维码扫描
  3. jset编写测试vue代码_详解使用jest对vue项目进行单元测试
  4. 别说我不会玩,我来告诉你iPhone有多烂!iPhone缺点集
  5. Shiro第四篇【Shiro与Spring整合、快速入门、Shiro过滤器、登陆认证】
  6. 重庆大学计算机学院国防生,在重大有个国防生男朋友是种什么样的体验?
  7. mysql 获取下一条记录数,如何在MySQL中查询当前数据上一条和下一条的记录
  8. Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果
  9. ActiveMQ入门教程(一) - JMS和ActiveMQ简介
  10. 为.net开发者提供的一份关于存储过程的评论(转载)
  11. php laravel手册,学习Laravel
  12. android室内地图,室内位置-与地图交互-开发指南-Android 室内地图SDK | 高德地图API...
  13. ADO与ADO.NET的区别
  14. JEECMS V8.1常用标签举例
  15. teablue数据分析_京东消费者数据分析
  16. 桌面cpu与服务器cpu天梯,台式CPU性能怎么看?桌面CPU天梯图2018年1月更新版
  17. [BZOJ 3653] 谈笑风生
  18. 基于Matlab-gui信号系统设计
  19. 金融核心业务流程整理
  20. UML类图关系(C++)

热门文章

  1. KVM配置之(3)- 克隆
  2. vim自定义配置之autoComplPop设置
  3. 使用Dnsmasq加速苹果App Store、iCloud、iTunes、Mac更新等访问速度
  4. 在线IDE之关键字另色显示
  5. 【正一专栏】今晚国足能上演奇迹吗?
  6. Java实现算法导论中反复平方法模取幂
  7. 算法导论之多项式与快速傅里叶变换
  8. 在线实时大数据平台Storm并行度试验
  9. unity game和scene效果不一样_都说水泥漆和乳胶漆只是叫法不一样,对房子装修效果一样,事实呢...
  10. rtsp协议_如何在RTSP协议视频智能平台EasyNVR未登录的情况下调用通道直播的接口?...