【NOI2017模拟6.29】呵呵
来源:互联网 发布:威锋软件源地址 编辑:程序博客网 时间:2024/05/17 22:58
题目
解法
考虑一个特定形态的树的贡献,设点i的度数为d[i],那么答案就是:
考虑prufer序,一个度数为d[i]的点出现的次数是d[i]-1,那么就可以得到一个很显然的DP,f[i][j]表示前i个点的度数为i+j:
这个DP是
即答案要求的是这样一个东西:
然后考虑将
将
这样有什么好处呢?可以看到后面的式子变成了这样的形式:
考虑生成函数:
那么前面的式子可以变成:
有:
综上所述有:
中间那个可以直接
所以总时间复杂度是
Code
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<cmath>#include<set>#include<bitset>#include<map>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;typedef long long LL;typedef double db;int get(){ char ch; while(ch=getchar(),(ch<'0'||ch>'9')&&ch!='-'); if (ch=='-'){ int s=0; while(ch=getchar(),ch>='0'&&ch<='9')s=s*10+ch-'0'; return -s; } int s=ch-'0'; while(ch=getchar(),ch>='0'&&ch<='9')s=s*10+ch-'0'; return s;}const int N = 2010;const int mo = 1e+9+7;int n;LL a[N],js[N],ny[N],mi[N];LL f[N];LL quickmi(LL x,LL tim){ LL ans=1; for(;tim;tim/=2,x=x*x%mo) if (tim&1)ans=ans*x%mo; return ans;}int main(){ freopen("hehe.in","r",stdin); freopen("hehe.out","w",stdout); n=get(); fo(i,1,n)a[i]=get(); js[0]=1; fo(i,1,n)js[i]=js[i-1]*i%mo; ny[n]=quickmi(js[n],mo-2); fd(i,n-1,0)ny[i]=ny[i+1]*(i+1)%mo; mi[0]=1; fo(i,1,n)mi[1]=(mi[1]+a[i])%mo; fo(i,2,n)mi[i]=mi[i-1]*mi[1]%mo; f[0]=1; fo(i,1,n) fd(j,n,0) f[j+1]=(f[j+1]+f[j]*a[i]%mo)%mo; LL ans=0; fo(k,0,n-2) ans=(ans+f[k]*mi[n-2-k]%mo*ny[n-2-k]%mo)%mo; ans=ans*js[n-2]%mo; fo(i,1,n)ans=ans*a[i]%mo; printf("%lld\n",ans); fclose(stdin); fclose(stdout); return 0;}
阅读全文
0 0
- 【NOI2017模拟6.29】呵呵
- 【JZOJ5180】【NOI2017模拟6.29】呵呵
- NOI2017模拟3.1 总结
- NOI2017模拟3.8 总结
- 【NOI2017模拟3.30】原谅
- 【NOI2017模拟4.2】查询
- 【NOI2017模拟4.2】押韵
- 【NOI2017模拟6.26】A
- 【NOI2017模拟6.2】字符串
- 【JZOJ5037】【NOI2017模拟3.30】轮回
- [JZOJ100003]【NOI2017模拟.4.1】 Tree
- 【JZOJ5036】【NOI2017模拟3.30】原谅
- 【JZOJ5037】【NOI2017模拟3.30】轮回
- 【JZOJ5040】【NOI2017模拟4.2】押韵
- 【JZOJ5039】【NOI2017模拟4.2】查询
- 【JZOJ100003】【NOI2017模拟.4.1】 Tree
- 【JZOJ100004】【NOI2017模拟.4.1】 Dice
- [JZOJ100004]【NOI2017模拟.4.1】 Dice
- Oracle11g和oracle10g之间的导入/导出
- 没有下载券和财富值如何下载文库的资料
- 给网址结尾加上反斜杠
- 底部弹出框分享
- 如何用MindManager画树状思维导图
- 【NOI2017模拟6.29】呵呵
- idea搭建mybatis一个小案例
- sqlserver安装出错:无法为此请求检索数据。
- 潮光光耦网分享简单易懂的专业光耦知识
- vim里面tab每次四个空格
- 工作记录--android 分线程, 录音
- 关于Idea软件 Maven项目 MyBatista案例单测的错误
- java堆算法之插入与删除
- SpringMVC之表单标签