题目

分析

套上prufer序列

对于一颗n个节点度数分别为\(d_1、d_2...d_n\)方案数为\(\dfrac{(n-2)!}{(d_1-1)!(d_2-1)!......(d_n-1)!}\)

所以答案为

\[\sum_{d_1+d_2+...+d_n=2n-2}\dfrac{(n-2)!}{(d_1-1)!(d_2-1)!...(d_n-1)!}w_1^{d_1}w_2^{d_2}...w_n^{d_n}d_1d_2...d_n
\]

使\(d_i-1\)

\[w_1w_2...w_n(n-2)!\sum_{d_1+d_2+...+d_n=n-2}\dfrac{1}{d_1!d_2!...d_n!}w_1^{d_1}w_2^{d_2}...w_n^{d_n}(d_1+1)(d_2+1)...(d_n+1)
\]

考虑处理

\[\sum_{d_1+d_2+...+d_n=n-2}\dfrac{1}{d_1!d_2!...d_n!}w_1^{d_1}w_2^{d_2}...w_n^{d_n}(d_1+1)(d_2+1)...(d_n+1)
\]

对于多项式\((d_1+1)(d_2+1)...(d_n+1)\),拆开后变成一个个形如\(d_1d_2...d_k\)的项

我们考虑\(d_1d_2d_3\)

\[\sum_{d_1+d_2+...+d_n=n-2}\dfrac{1}{d_1!d_2!...d_n!}w_1^{d_1}w_2^{d_2}...w_n^{d_n}d_1d_2d_3
\]

\[w_1w_2w_3\sum_{d_1+d_2+...+d_n=n-2-3}\dfrac{1}{d_1!d_2!...d_n!}w_1^{d_1}w_2^{d_2}...w_n^{d_n}
\]

\[\sum_{k=1}^{n-2}(\sum_{1\leq p_1<p_2<...<p_k \leq n}\Pi_{i=1}^{k}w_{p_i})\dfrac{(\sum_{i=1}^{n}w_i)^{n-2-k}}{(n-2-k)!}
\]

//后面的内容我还不太理解,只能大概讲讲。如果讲错了,请大佬指出一下错误

现在解释一下最后一条式子

根据指数型生成函数的定义

\[G(x)=\sum g_i\dfrac{x^i}{i!}=\dfrac{x^1}{1!}+\dfrac{x^2}{2!}+\dfrac{x^3}{3!}+..
\]

当\(g_i=1\)时,\(G(x)=e^x\)

那么,$$\sum_{d_1+d_2+...+d_n=n-2-k}\dfrac{1}{d_1!d_2!...d_n!}w_1{d_1}w_2{d_2}...w_n^{d_n}$$

\[=(\dfrac{w_1^1}{1!}+\dfrac{w_1^2}{2!}+..)(\dfrac{w_2^1}{1!}+\dfrac{w_2^2}{2!}+..)...(\dfrac{w_n^1}{1!}+\dfrac{w_n^2}{2!}+..)[其中总次方数为n-2-k]
\]

\[=G(w_1)G(w_2)...G(w_n)[其中总次方数为n-2-k]
\]

\[=e^{w_1+w_2+...+w_n}[其中总次方数为n-2-k]
\]

\[=G(w_1+w_2+...+w_n)=\sum \dfrac{(w_1+w_2+...+w_n)^i}{i!}
\]

那么当\(i=n-2-k\)时,则就是\(\sum_{d_1+d_2+...+d_n=n-2-k}\dfrac{1}{d_1!d_2!...d_n!}w_1^{d_1}w_2^{d_2}...w_n^{d_n}\)

即为$$\dfrac{(\sum_{i=1}{n}w_i){n-2-k}}{(n-2-k)!}$$

#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
#include <map>
const int maxlongint=2147483647;
const long long mo=1e9+7;
const int N=2005;
using namespace std;
long long w[N],ans,f[N],sum,jc[N],ww;
int n;
long long mi(long long x,int y)
{
long long s=1;
for(;y;x=x*x%mo,y>>=1) s=y&1?s*x%mo:s;
return s;
}
int main()
{
scanf("%d",&n);
f[0]=jc[0]=ww=1;
for(int i=1;i<=n;i++)
{
scanf("%lld",&w[i]),sum=(sum+w[i])%mo,jc[i]=jc[i-1]*i%mo,ww=ww*w[i]%mo;
for(int j=i;j>=1;j--) f[j]=(f[j]+f[j-1]*w[i]%mo)%mo;
}
for(int k=0;k<=n-2;k++)
ans=(ans+f[k]*mi(sum,n-2-k)%mo*mi(jc[n-2-k],mo-2)%mo)%mo;
printf("%lld",ans*ww%mo*jc[n-2]%mo);
}

【JZOJ5180】【NOI2017模拟6.29】呵呵的更多相关文章

  1. 【JZOJ5179】【NOI2017模拟6.29】哈哈

    题意 给定一个长度为n的序列,你可以进行若干次操作: 选择一个区间,删掉,并获得Val[Len]的得分,Len为这个区间的长度: 其中这个区间满足: 1.相邻两个数差的绝对值为1 2.每个数都大于相邻 ...

  2. JZOJ 5184. 【NOIP2017提高组模拟6.29】Gift

    5184. [NOIP2017提高组模拟6.29]Gift (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed ...

  3. [jzoj NOIP2018模拟10.29]

    OI生涯的最高分,来了纪中这么多天,在经历了这么多场“NOIP难度”的模拟赛之后,终于看到了真正的NOIP 今天考场上效率很高,很快码完了全部的题目,留下了足够的时间对拍和...发呆.不得不说看着电脑 ...

  4. 「模拟8.29」chinese(性质)·physics·chemistry(概率期望)

    T1  chinese 根据他的问题i*f[i]我们容易联想到,答案其实是每种方案中每个点的贡献为1的加和 我们可以转变问题,每个点在所有方案的贡献 进而其实询问就是1-k的取值,有多少中方案再取个和 ...

  5. 【模拟7.29】大佬(概率期望DP)

    首先根据数据范围,可以判断基本上是n^2的复杂度 通过分析我们发现每一次都可以从m个数中任意选,既然任意选,那么此时的概率的分母就是不变的,然而题中涉及的是某一段的最大值,所以我们按套路假设 f[i] ...

  6. [jzoj]2505.【NOIP2011模拟7.29】藤原妹红

    Link https://jzoj.net/senior/#main/show/2505 Description 在幻想乡,藤原妹红是拥有不老不死能力的人类.虽然不喜欢与人们交流,妹红仍然保护着误入迷 ...

  7. [JZOJ 5888] [NOIP2018模拟9.29] GCD生成树 解题报告 (最大生成树+公约数)

    题目链接: http://172.16.0.132/senior/#main/show/5888 题目: 题解: 思路是这样的:两个数的最大公约数一定不会比这两个数的任意一个数大.因此我们把权值相等的 ...

  8. [考试反思]0822NOIP模拟测试29:延续

    想保持优秀很困难 但是想持续垫底却很简单 但是你不想垫底的话持续垫底也很容易... 分AB卷,A卷共15人. skyh,tdcp,kx155,B哥145... 我:35,倒数第一. 板子专题,爆零快乐 ...

  9. 8.22 NOIP模拟测试29(B) 爬山+学数数+七十和十七

    T1 爬山 二分最高高度,$O(1)$判断是否可行. #include<iostream> #include<cstdio> #define ll long long usin ...

随机推荐

  1. Java入门第一季学习总结

    一.课程总概 这门课程的学习难度属于入门级别,又由于有c++的基础,所以学习这门课程也是比较轻松的.可以简单地把这门课的学习分为四部分:第一部分,java的介绍(第一章):第二部分,java的数据类型 ...

  2. Js 原型,原型链

    原型,原型链 原型:在JavaScript中原型是一个prototype对象,用于表示类型之间的关系. 原型链:JavaScript万物都是对象,对象和对象之间也有关系,并不是孤立存在的.对象之间的继 ...

  3. js中‘0’到底是 true 还是 false

    if ('0') alert("'0' is true");  if ('0' == false) alert("'0' is false");结果是,两次都 ...

  4. 一些通用的js工具类,添加自定义插件

    common_t.js /** * 通用工具组件 对原有的工具进行封装,自定义某方法统一处理<br> * ^_^ * * Author: em.D * Date: 2016-05-17 * ...

  5. JS中this的4种绑定规则

    this ES6中的箭头函数采用的是词法作用域. 为什么要使用this:使API设计得更简洁且易于复用. this即不指向自身,也不指向函数的词法作用域. this的指向只取决于函数的调用方式 thi ...

  6. P3488 [POI2009]LYZ-Ice Skates

    传送门 这一题基础是二分图匹配,并且要知道一个 $Hall$ 定理:对于二分图能完全匹配的充要条件是,设点数少的那边为左边,点数为 $n$,对于 $k \in [1,n]$ ,左边任意 $k$ 个点, ...

  7. 微信小程序使用页面栈改变上一页面的数据

    微信小程序中如果从一个页面中进入下一个页面,如果下个页面的数据有删除或者增加再返回上一个页面的时候,就会导致页面不刷新(数据加载函数在onload中),从而造成数据不一致的情况.其实在微信小程序中是可 ...

  8. easyui在table单元格中添加进度条

    function XR_jd(alue, rowData, rowIndex){ var value; ...... var htmlstr = '<div class="easyui ...

  9. Yii2 增删查改

    查: User::find()->all();    //返回所有用户数据:User::findOne($id);   //返回 主键 id=1  的一条数据: User::find()-> ...

  10. 使用xpath爬取猫眼电影排行榜

    最近在学习xpath,在网上找资料的时候,发现一个新手经常拿来练手的项目,爬取猫眼电影前一百名排行的信息,很多都是跟崔庆才的很雷同,基本照抄.这里就用xpath自己写了一个程序,同样也是爬取猫眼电影, ...