原题的价值 出题人:VFleaking hnoi2015 集训
来源:互联网 发布:易语言微信加好友源码 编辑:程序博客网 时间:2024/06/05 18:49
题目大意:
解题思路:
算法一(10分):
暴力枚举每条边是否选取,然后统计答案就行了,再次不赘述,可以通过测试点1。
算法二(40分):
观察
算法三(60分):
对于
算法四(70分):
对于算法三,瓶颈在于计算
这样就可以在
算法五(100分):
观察算法四中的瓶颈,发现在求斯特林数
根据第二类斯特林数的模型意义(不知道的请上网查吧),根据容斥原理,我们有
=
ps:不要问我怎么写FFT,我也不会T^T………
AC代码:
#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <algorithm>#include <iostream>using namespace std;const long long Mod=998244353;long long n,K;long long S[100010]={0};long long N=1;long long a[300000]={0};long long b[300000]={0};long long c[300000]={0};long long ksm(long long a,long long k,long long MM){ long long o=1; for(;k;) { if(k&1) o=(long long)o*a%MM; a=(long long)a*a%MM; k>>=1; } return o;}void FFT(long long *A,int num,int flag){ for(int i=0;i<num;i++) { int p=0,s=i; for(int j=(num>>1);j>=1;j>>=1) { p|=(s&1)*j; s>>=1; } if(p>i) swap(A[i],A[p]); } for(int l=2;l<=num;l<<=1) { long long w; if(flag==1) w=ksm(3,(Mod-1)/l,Mod); else { long long help=ksm(3,Mod-2,Mod); w=ksm(help,(Mod-1)/l,Mod); } for(int i=0;i<num;i+=l) { long long wk=1; for(int j=0;j<(l>>1);j++) { long long u=A[i+j],t=wk*A[i+j+(l>>1)]%Mod; A[i+j]=(u+t)%Mod; A[i+j+(l>>1)]=(u-t+Mod)%Mod; wk=wk*w%Mod; } } } if(flag==-1) for(int i=0;i<num;i++) A[i]=A[i]*ksm(num,Mod-2,Mod)%Mod; return;}int main(){ long long ans=0; freopen("value.in","r",stdin); freopen("value.out","w",stdout); cin>>n>>K; long long NI=1; long long jiecheng=1; int fh=1; for(int i=0;i<=K;i++) { if(i==0) { a[i]=1; b[i]=0; } else { jiecheng=jiecheng*ksm(i,Mod-2,Mod)%Mod; a[i]=(fh*jiecheng+Mod)%Mod; b[i]=ksm(i,K,Mod)*jiecheng%Mod; } fh*=-1; } N=1; for(;N<K+K+1;N<<=1); FFT(a,N,1); FFT(b,N,1); for(int i=0;i<N;i++) c[i]=a[i]*b[i]%Mod; FFT(c,N,-1); for(long long i=0;i<=K;i++) { if(NI==0) break; if(K==0) c[0]=1; ans+=c[i]*ksm(2,n-1-i,Mod)%Mod*NI%Mod; NI=NI*(n-i-1)%Mod; ans%=Mod; } ans=ans*n%Mod; ans=ans*ksm(2,(n-1)*(n-2)/2,Mod)%Mod; cout<<ans<<endl; fclose(stdin); fclose(stdout); return 0;}
- 原题的价值 出题人:VFleaking hnoi2015 集训
- 【XSY1301】原题的价值 第二类斯特林数 NTT
- ACdream:无耻的出题人
- ACdream1069-无耻的出题人
- ACdream 1069 无耻的出题人 无聊写着玩的题
- 一篇气死出题人的高考作文
- ACdream 1069无耻的出题人
- ACdreamer 1069 无耻的出题人
- ACdream 1069 无耻的出题人【Fibnacci】
- ACdream 1069 无耻的出题人【规律】
- ACdream 1069无耻的出题人
- SAT填空题是如何出题的?
- UOJ83 水题出题人【提答】
- 滚粗的HNOI2015
- 2017.6.6~2017.6.8集训原题检测总结
- 一道超级坑爹的水题(ACdream oj 无耻的出题人)
- 我的出题记录
- [Sdoi2013]保护出题人
- 預防 Android Dex 64k Method Size Limit
- 改变UITabBar的背景色
- 13、Notification与多线程
- Unity3D开发(五):Unity3D 4.x 使用Mecanim实现连击
- 二分查找算法(折半查找算法)
- 原题的价值 出题人:VFleaking hnoi2015 集训
- 算法——堡垒问题
- java中Object转String
- java中的几个关键字
- 企业的五种组织架构模式
- 如何更改Win8,8.1中文版到英文版,亲测!
- nyoj韩信点兵
- [菜鸟学爪哇]Day 6
- pb数据窗口类型