博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ2498 : Xavier is Learning to Count
阅读量:6937 次
发布时间:2019-06-27

本文共 947 字,大约阅读时间需要 3 分钟。

考虑容斥,通过$Bell(p)$的时间枚举所有等价情况。

对于一种情况,强制了一个等价类里面的数都要相同,其它的可以相同也可以不同。

这方案数显然可以通过多项式乘法求得,乘上容斥系数$(-1)^{p-等价类个数}\ \ \ \ \ \ \ \times(每个等价类大小-1)!之积$。

可以先把那$p$个多项式DFT,然后在点值表示下计算答案,最后再IDFT回来即可。

时间复杂度$O(pn(\log n+Bell(p)))$。

 

#include
#include
#include
using namespace std;typedef long double ld;const int N=65540;const ld pi=acos(-1.0);int T,C,_,P,n,m,a[N],i,j,pos[N],w[6];struct comp{ ld r,i; comp(ld _r=0,ld _i=0){r=_r,i=_i;} comp operator+(const comp&x){return comp(r+x.r,i+x.i);} comp operator-(const comp&x){return comp(r-x.r,i-x.i);} comp operator*(const comp&x){return comp(r*x.r-i*x.i,r*x.i+i*x.r);}}f[6][N],g[N];inline void FFT(comp*a,int n,int t){ for(int i=1;i
n)n=a[i]; } n*=P; for(m=1;m<=n;m<<=1); j=__builtin_ctz(m)-1; for(i=0;i
>1]>>1|((i&1)<
0.5)printf("%d: %.0f\n",i,(double)ans); } puts(""); } return 0;}

  

转载地址:http://vifnl.baihongyu.com/

你可能感兴趣的文章
谁动了我的文件?
查看>>
京东刘强东的3次大抉择
查看>>
手机多图传输神器-快传正式版抢先评测
查看>>
分享三种简单的推广渠道,玩转引流精准粉
查看>>
U2L蔚然成风,曙光为什么能抢了VMware的风头?
查看>>
MySQL基础备忘(2)之视图
查看>>
MapGuide OpenSource 2.2 安装中的数字签名错误
查看>>
ubuntu分区
查看>>
艾伟_转载:学习 ASP.NET MVC (第五回)理论篇
查看>>
Amazon AWS云管理平台技术内幕,互联网营销
查看>>
【评论】GNU/Linux下有多少是GNU的?
查看>>
IE漏洞致数百万用户中招 快用瑞星卡卡打补丁
查看>>
瑞星义卖活动圆满结束 感谢用户积极参与
查看>>
【Oracle】SQL学习笔记1---基本概念及SELECT语句及提取和排序数据
查看>>
大流量网站的底层系统架构
查看>>
技巧:Vimdiff 使用(转)
查看>>
VirtualBox安装CentOS后如何安装增强功能
查看>>
3D数学知识简介
查看>>
AMD OpenCL大学课程(3)
查看>>
一种线程安全的单例模式实现
查看>>