可以发现如果将根的结果写成多项式,可以发现只需要预处理出f[i][j]表示以i为根的子树j次项有多少个,g[i]表示从n个数中选取i个数相乘的和,就可以通过\sum_{i=1}^{n}f[1][i]\cdot g[i]\cdot (n-i)!$计算。可以发现有递推式:$g[i]=g[i-1]\cdot i\cdot \sum_{i=1}^{n}a[j]$,当符号是+,f[i][j]=f[ls][j]+f[rs[j]];当符号是*,$f[i][j]=\sum\limits_{k=1}^{j-1}f[ls][k]\cdot f[rs][j-k]$;当是叶子节点,f[i][j]=[j==1]。

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define mod 1000000007
4 #define N 6005
5 long long n,p,ans,jc[N],a[N],x[N],y[N],sz[N],dp[N][N],f[N];
6 char s[N][11];
7 void dfs(int k){
8 if (!x[k]){
9 sz[k]=dp[k][1]=1;
10 return;
11 }
12 dfs(x[k]);
13 dfs(y[k]);
14 sz[k]=sz[x[k]]+sz[y[k]];
15 if (s[k][0]=='+')
16 for(int i=1;i<=sz[k];i++)dp[k][i]=(dp[x[k]][i]+dp[y[k]][i])%mod;
17 else
18 for(int i=1;i<=sz[x[k]];i++)
19 for(int j=1;j<=sz[y[k]];j++)dp[k][i+j]=(dp[k][i+j]+dp[x[k]][i]*dp[y[k]][j])%mod;
20 }
21 int main(){
22 scanf("%lld",&n);
23 for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
24 f[0]=1;
25 for(int i=1;i<=n;i++)
26 for(int j=i;j>=0;j--)f[j]=(f[j]+j*f[j-1]%mod*a[i])%mod;
27 for(int i=1;i<=2*n-1;i++){
28 scanf("%lld",&p);
29 if (p==1)scanf("%lld%lld%s",&x[i],&y[i],s[i]);
30 }
31 jc[1]=1;
32 for(int i=2;i<=n;i++)jc[i]=jc[i-1]*i%mod;
33 dfs(1);
34 for(int i=1;i<=n;i++)ans=(ans+jc[n-i]*dp[1][i]%mod*f[i])%mod;
35 printf("%lld",ans);
36 }

最新文章

  1. 移动端页面按手机屏幕分辨率自动缩放的js
  2. C语言与内存模型初探
  3. change column to bigint
  4. j2ee servlet listener
  5. leetcode 100
  6. iOS 开发--多线程
  7. CentOS配置java运行环境
  8. OpenCV2.x自学笔记——最大类间方差法OTSU
  9. Hadoop中Hbase的体系结构
  10. js 你所不知道的一面
  11. 对某菠菜网站的一次渗透测试 heatlevel
  12. 切换用户后,/etc/profile的配置不起效
  13. python-memcached包使用方法
  14. java倒计时使用ScheduledExecutor实现,使用两个线程,以秒为单位
  15. WIN32控件使用系统样式
  16. Java Deadlock Example and How to analyze deadlock situation
  17. 【Java】IO Stream详细解读
  18. Ocelot中文文档入门
  19. Kafka消息队列
  20. 搜索关键字自动更正 - Oracle Endeca Server

热门文章

  1. centos6.5 oracle 卸载
  2. 9.亿级流量电商系统JVM模型参数预估方案
  3. js 手动实现 promise.all的功能
  4. 2021年3月-第02阶段-前端基础-HTML+CSS阶段-Day02
  5. 掌握BeanShell,轻松处理jmeter中的数据
  6. Linux服务器装Anaconda&amp;TensorFlow
  7. the Agiles Scrum Meeting 7
  8. Sharding-JDBC自定义复合分片算法
  9. [调试笔记] 晚测5 T1 容易题
  10. 计算机网络之流量控制(停止-等待协议、滑动窗口、后退N帧协议GBN、选择重传协议SR)、滑动窗口、可靠传输机制