博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P4491 [HAOI2018] 染色
阅读量:6700 次
发布时间:2019-06-25

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

题意分析

要求\(k\)种颜色恰好出现\(S\)

也就是出现\(S\)次的颜色恰好有\(k\)

我们可以发现\(lim=max\{k\}=min(\frac{n}{s},{m})\)

我们可以容斥一下 就是

出现\(S\)次的颜色至少存在\(k\)

那么

\[dp[k]=C_m^kC_{n}^{ks}(m-k)^{m-ks}\]

应该和好理解的

出现\(S\)次的颜色恰好\(k\)种就是

\[ans[k]=\sum_{j=k}^{lim}(-1)^{j-k}C_j^kdp[j]\]

\(j\)种颜色中\(k\)种被重复算了\(C_j^k\)

那么我们拆开就是

\[ans[k]* k!=\sum_{j=k}^{lim}\frac{(-1)^{j-k}}{(j-k)!}dp[j]* j!\]

如何求\(\sum_{j=k}^{lim}\frac{(-1)^{j-k}}{(j-k)!}dp[j]* j!\)

我们考虑维护出

\[a[i]=dp[i]* i!\ \ \ \ \ \ b[i]=\frac{(-1)^{i}}{i!}\]

然后就是套路 翻转\(a\)序列

那么就是多项式乘法\(NTT\)

那么对应就是\(lim-j+j-k=lim-k\)

所以我们再反转一下就可以了

然后累加就可以了

CODE:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long#define inf 0x7fffffff#define N 500008#define IL inline#define M 10000611#define D double#define mod 1004535809#define Gi 334845270 #define R registerusing namespace std;template
IL void read(T &_){ T __=0,___=1;char ____=getchar(); while(!isdigit(____)) {if(____=='-') ___=0;____=getchar();} while(isdigit(____)) {__=(__<<1)+(__<<3)+____-'0';____=getchar();} _=___ ? __:-__;}/*-------------OI使我快乐-------------*/int n,m,s,have,lim,all;ll ans;ll fav[M],fac[M],inv[M],num[M];ll dp[M],cdy[M],wzy[M];int key[M];IL ll C(int x,int y){return fac[x]*fav[x-y]%mod*fav[y]%mod;}IL ll qpow(ll x,ll y){ll res=1;for(;y;y>>=1,x=x*x%mod) if(y&1) res=res*x%mod;return res;}IL void NTT(ll *A,int knd){ for(R int i=0;i
>1]>>1)|((i&1)<<(all-1))); NTT(cdy,1);NTT(wzy,1); for(R int i=0;i

HEOI 2019 RP++

转载于:https://www.cnblogs.com/LovToLZX/p/10590450.html

你可能感兴趣的文章
XCode10 swift4.2 适配遇到的坑
查看>>
java-递归折半查找法
查看>>
RPM的用法
查看>>
linux下搭建FTP服务器
查看>>
c语言数组问题解析
查看>>
Windows 7操作系统使用移动硬盘快速安装
查看>>
DuangDuangDuang!码云项目的 Readme.md 特殊技能
查看>>
笔记--相册
查看>>
LINUX添加一块网卡地址配置及问题
查看>>
lastb
查看>>
[置顶] cocos2d-x 手游源码站
查看>>
2016年学习Linux决心书(老男孩教育在线课程班第二期)
查看>>
Linux文件系统
查看>>
37signals为何砍掉中层?个人点评,高素质人才队伍工作,靠的是全体发挥综合能力,而不是靠......
查看>>
从表到里学习JVM实现
查看>>
关于数据库查询优化的思考
查看>>
如何在android studio中设置sdk path?
查看>>
iptables的SNAT和DNAT应用
查看>>
搭建LNMP遇到的问题
查看>>
java String类 常用函数
查看>>