hdu5396(区间DP)
题目意思:
给定一个表达式,运算符没有优先级,求不同顺序计算,所有可能的得到的结果之和。
由于运算符没有优先级,所以有多种顺序去计算,设d[i][j]表示[i,j]区间表达式通过不同顺序计算,所以可能得到的结果之和,
枚举最后一次运算符是第t个,有可能是加减乘三种,所以需要不同处理。
最后由于s[i][t],s[t+1][j],内部运算的绝对顺序确定,但是s[i][j]整体的相对顺序还没确定,所以乘上C[t-i][j-i-1].
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define maxn 150
#define LL long long
#define MOD 1000000007
using namespace std;
LL s[maxn][maxn];
LL C[maxn][maxn];
LL fac[maxn];
int n;
int a[maxn];
char op[maxn];
void init()
{
fac[]=;
for(int i=;i<maxn;i++)
{
fac[i]=(fac[i-]*i)%MOD;
}
C[][]=;
for(int j=;j<maxn;j++)
{
C[][j]=;
for(int i=;i<maxn;i++)
{
C[i][j]=( (C[i][j-]+C[i-][j-])) %MOD; //²»Ñ¡£¬C[i][j-1],Ñ¡£¬C[i-1][j-1]
}
}
// printf("%lld\n",C[3][6]);
}
void init1()
{
memset(s,,sizeof(s));
}
void solve()
{
for(int tt=;tt<=n;tt++)
for(int i=;i<=n;i++)
{
int j=i+tt;
if(j>n)
continue;
for(int t=i;t<=j-;t++)
{
if(op[t]=='+')
{
int k1=fac[t-i];
int k2=fac[j-(t+)];
LL temp=;
temp = ( (k2*s[i][t])%MOD+(k1*s[t+][j])%MOD )%MOD;
temp = (temp *C[t-i][j-i-]) %MOD;
s[i][j]= (s[i][j]+temp)%MOD;
}
else if(op[t]=='-')
{
int k1=fac[t-i];
int k2=fac[j-(t+)];
LL temp=;
temp = ( (k2*s[i][t])%MOD-(k1*s[t+][j])%MOD +MOD)%MOD;
temp = (temp *C[t-i][j-i-]) %MOD;
s[i][j]= (s[i][j]+temp)%MOD;
}
else if(op[t]=='*')
{
LL temp=;
temp =(s[i][t]*s[t+][j]) % MOD;
temp = (temp *C[t-i][j-i-]) %MOD;
s[i][j]= (s[i][j]+temp)%MOD;
}
}
}
/* for(int tt=1;tt<=n;tt++)
{
for(int i=1;i<=n;i++)
{
int j=i+tt;
if(j>n)
continue;
printf("%lld ",(s[i][j]+MOD)%MOD );
}
printf("\n");
}*/
printf("%lld\n",s[][n]);
}
int main()
{
// freopen("test.txt","r",stdin);
init();
while(~scanf("%d",&n))
{
init1();
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
s[i][i]=a[i];
//printf("%d ",a[i]);
}
scanf("%s",&(op[]));
// printf("%s\n",&(op[1]));
solve();
}
return ;
}
hdu5396(区间DP)的更多相关文章
- [hdu5396 Expression]区间DP
题意:给一个表达式,求所有的计算顺序产生的结果总和 思路:比较明显的区间dp,令dp[l][r]为闭区间[l,r]的所有可能的结果和,考虑最后一个符号的位置k,k必须在l,r之间,则l≤k<r, ...
- 【BZOJ-4380】Myjnie 区间DP
4380: [POI2015]Myjnie Time Limit: 40 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 162 Solved: ...
- 【POJ-1390】Blocks 区间DP
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5252 Accepted: 2165 Descriptio ...
- 区间DP LightOJ 1422 Halloween Costumes
http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...
- BZOJ1055: [HAOI2008]玩具取名[区间DP]
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1588 Solved: 925[Submit][Statu ...
- poj2955 Brackets (区间dp)
题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...
- HDU5900 QSC and Master(区间DP + 最小费用最大流)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...
- BZOJ 1260&UVa 4394 区间DP
题意: 给一段字符串成段染色,问染成目标串最少次数. SOL: 区间DP... DP[i][j]表示从i染到j最小代价 转移:dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k ...
- 区间dp总结篇
前言:这两天没有写什么题目,把前两周做的有些意思的背包题和最长递增.公共子序列写了个总结.反过去写总结,总能让自己有一番收获......就区间dp来说,一开始我完全不明白它是怎么应用的,甚至于看解题报 ...
随机推荐
- POJ 2391 Ombrophobic Bovines【二分 网络流】
题目大意:F个草场,P条道路(无向),每个草场初始有几头牛,还有庇护所,庇护所有个容量,每条道路走完都有时间,问所有奶牛都到庇护所最大时间最小是多少? 思路:和POJ2112一样的思路,二分以后构建网 ...
- /etc/fstab readyonly 解决办法
阿里云主机切换地区强制升级后,“新的磁盘盘符识别为vdb1,但是在/etc/fstab中记录的挂载信息还是旧的xvdb1,导致磁盘挂载失败” 机子启动出错了. 按提示 输入 root的密码,进入以Re ...
- [USACO13NOV]空荡荡的摊位Empty Stalls
题目描述 Farmer John's new barn consists of a huge circle of N stalls (2 <= N <= 3,000,000), numbe ...
- BZOJ2097: [Usaco2010 Dec]Exercise 奶牛健美操
n<=100000的树,砍S<n条边,求砍完后S+1棵树的最大直径的最小值. 树的直径要小小哒,那考虑一棵子树的情况吧!一棵子树的直径,就是子树根节点各儿子的最大深度+次大深度.就下面这样 ...
- [Bzoj2733][Hnoi2012] 永无乡(BST)(Pb_ds tree)
2733: [HNOI2012]永无乡 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 4108 Solved: 2195[Submit][Statu ...
- Django学习系列之request对象
先来一个简单的实例 urls.py from django.conf.urls import url from django.contrib import admin from cmdb import ...
- 转: eclipse 快捷键列表(功能清晰版本)
转自: http://www.uml.org.cn/mobiledev/201110092.asp Eclipse 在开发中使用到的快捷键很实用噢 Ctrl+1 快速修复(最经典的快捷键,就不用多说了 ...
- 通过grub硬盘安装centos7
centos7与centos6.x有了很大的不同,从硬盘安装的方法也有了很大的不同,故出此文章我机器环境如下: 有俩系统 Win7 和 RHEL6.4 ,是通过grub(非grub2)引导的,g ...
- Angular团队公布路线图,并演示怎样与React Native集成
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/06/angular-2-react-native-roadmap 前不久在旧 ...
- activiti自己定义流程之自己定义表单(二):创建表单
注:环境配置:activiti自己定义流程之自己定义表单(一):环境配置 在上一节自己定义表单环境搭建好以后,我就正式開始尝试自己创建表单,在后台的处理就比較常规,主要是针对ueditor插件的功能在 ...