[LOJ#3120][Luogu5401][CTS2019]珍珠(容斥+生成函数)
https://www.luogu.org/blog/user50971/solution-p5401
- #include<cstdio>
- #include<algorithm>
- #define rep(i,l,r) for (int i=(l); i<=(r); i++)
- using namespace std;
- const int N=,mod=,i2=;
- int D,n,m,ans,fac[N],inv[N],ip2[N],f[N],g[N],rev[N],a[N],b[N];
- int ksm(int a,int b){
- int res=;
- for (; b; a=1ll*a*a%mod,b>>=)
- if (b & ) res=1ll*res*a%mod;
- return res;
- }
- int C(int n,int m){ return n<m ? : 1ll*fac[n]*inv[m]%mod*inv[n-m]%mod; }
- void NTT(int a[],int n,bool f){
- for (int i=; i<n; i++) if (i<rev[i]) swap(a[i],a[rev[i]]);
- for (int i=; i<n; i<<=){
- int wn=ksm(,f?(mod-)/(i<<):(mod-)-(mod-)/(i<<));
- for (int p=i<<,j=; j<n; j+=p){
- int w=;
- for (int k=; k<i; k++,w=1ll*w*wn%mod){
- int x=a[j+k],y=1ll*w*a[i+j+k]%mod;
- a[j+k]=(x+y)%mod; a[i+j+k]=(x-y+mod)%mod;
- }
- }
- }
- if (f) return;
- int inv=ksm(n,mod-);
- for (int i=; i<n; i++) a[i]=1ll*a[i]*inv%mod;
- }
- int main(){
- freopen("pearl.in","r",stdin);
- freopen("pearl.out","w",stdout);
- scanf("%d%d%d",&D,&n,&m);
- if (n-*m<){ puts(""); return ; }
- if (n-*m>=D){ printf("%d\n",ksm(D,n)); return ; }
- fac[]=ip2[]=;
- rep(i,,D) fac[i]=1ll*fac[i-]*i%mod,ip2[i]=1ll*ip2[i-]*i2%mod;
- inv[D]=ksm(fac[D],mod-);
- for (int i=D; i; i--) inv[i-]=1ll*inv[i]*i%mod;
- int l=,L=,t=;
- while (l<=(D<<)) l<<=,L++;
- for (int i=; i<l; i++) rev[i]=(rev[i>>]>>)|((i&)<<(L-));
- rep(i,,D) a[i]=1ll*t*ksm(D-*i+mod+mod,n)%mod*inv[i]%mod,b[i]=inv[i],t=mod-t;
- NTT(a,l,); NTT(b,l,);
- for (int i=; i<l; i++) a[i]=1ll*a[i]*b[i]%mod;
- NTT(a,l,);
- rep(i,,D) f[i]=1ll*ip2[i]*fac[i]%mod*C(D,i)%mod*a[i]%mod;
- for (int i=; i<l; i++) a[i]=b[i]=;
- t=(D&)?mod-:;
- rep(i,,D) a[i]=1ll*f[i]*fac[i]%mod,b[i]=1ll*t*inv[D-i]%mod,t=mod-t;
- NTT(a,l,); NTT(b,l,);
- for (int i=; i<l; i++) a[i]=1ll*a[i]*b[i]%mod;
- NTT(a,l,);
- rep(i,,D) g[i]=1ll*a[D+i]*inv[i]%mod;
- rep(i,,n-*m) ans=(ans+g[i])%mod;
- printf("%d\n",ans);
- return ;
- }
[LOJ#3120][Luogu5401][CTS2019]珍珠(容斥+生成函数)的更多相关文章
- LOJ3120. 「CTS2019」珍珠 [容斥,生成函数]
传送门 思路 非常显然,就是要统计有多少种方式使得奇数的个数不超过\(n-2m\).(考场上这个都没想到真是身败名裂了--) 考虑直接减去钦点\(n-2m+1\)个奇数之后的方案数,但显然这样会算重, ...
- Luogu5401 CTS2019珍珠(生成函数+容斥原理+NTT)
显然相当于求有不超过n-2m种颜色出现奇数次的方案数.由于相当于是对各种颜色选定出现次数后有序排列,可以考虑EGF. 容易构造出EGF(ex-e-x)/2=Σx2k+1/(2k+1)!,即表示该颜色只 ...
- bzoj3771: Triple(容斥+生成函数+FFT)
传送门 咳咳忘了容斥了-- 设\(A(x)\)为斧头的生成函数,其中第\(x^i\)项的系数为价值为\(i\)的斧头个数,那么\(A(x)+A^2(x)+A^3(x)\)就是答案(于是信心满满的打了一 ...
- 【洛谷5644】[PKUWC2018] 猎人杀(容斥+生成函数+分治NTT)
点此看题面 大致题意: 有\(n\)个人相互开枪,每个人有一个仇恨度\(a_i\),每个人死后会开枪再打死另一个还活着的人,且第一枪由你打响.设当前剩余人仇恨度总和为\(k\),则每个人被打中的概率为 ...
- 5.15 省选模拟赛 容斥 生成函数 dp
LINK:5.15 T2 个人感觉生成函数更无脑 容斥也好推的样子. 容易想到每次放数和数字的集合无关 所以得到一个dp f[i][j]表示前i个数字 逆序对为j的方案数. 容易得到转移 使用前缀和优 ...
- [CTS2019]珍珠(NTT+生成函数+组合计数+容斥)
这题72分做法挺显然的(也是我VP的分): 对于n,D<=5000的数据,可以记录f[i][j]表示到第i次随机有j个数字未匹配的方案,直接O(nD)的DP转移即可. 对于D<=300的数 ...
- @loj - 3120@ 「CTS2019 | CTSC2019」珍珠
目录 @description@ @solution@ @accepted code@ @details@ @description@ 有 \(n\) 个在范围 \([1, D]\) 内的整数均匀随机 ...
- [JSOI2019]神经网络(树形DP+容斥+生成函数)
首先可以把题目转化一下:把树拆成若干条链,每条链的颜色为其所在的树的颜色,然后排放所有的链成环,求使得相邻位置颜色不同的排列方案数. 然后本题分为两个部分:将一棵树分为1~n条不相交的链的方案数:将这 ...
- LOJ 3120: 洛谷 P5401: 「CTS2019 | CTSC2019」珍珠
题目传送门:LOJ #3120. 题意简述: 称一个长度为 \(n\),元素取值为 \([1,D]\) 的整数序列是合法的,当且仅当其中能够选出至少 \(m\) 对相同元素(不能重复选出元素). 问合 ...
随机推荐
- CF1172E Nauuo and ODT
CF1172E Nauuo and ODT 神仙题orz 要算所有路径的不同颜色之和,多次修改,每次修改后询问. 对每种颜色\(c\)计算多少条路径包含了这个颜色,不好算所以算多少条路径不包含这个颜色 ...
- Android入门教程(八)
关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 本篇文章同步微信公众号 欢迎大家关注我的微信公众号:「醉翁猫咪」 今天讲讲安卓入门(八),讲讲Android的简介,如何搭建An ...
- 【POJ1573】Robot Motion
题目传送门 本题知识点:模拟 本题的题意也很简单. 给出一个矩阵,矩阵里面有着东南西北(上下左右)的指示,当机器人走到上面时则会按照指示前进.机器人每次都从最上面一行的某一列进入. 需要判断的是机器人 ...
- 【CSP模拟赛】starway(玄学建边 最小生成树)
问題描述 小w伤心的走上了 Star way to heaven. 到天堂的道路是一个笛卡尔坐标系上一个n×m的长方形通道(顶点在(0,0))和(n,m)),小w从最左边任意一点进入,从右边任意一 ...
- SSH框架整合3——原生态SessionFactory
================================================web.xml============================================= ...
- 刷题记录:[XNUCA2019Qualifier]EasyPHP
目录 刷题记录:[XNUCA2019Qualifier]EasyPHP 解法一 1.error_log结合log_errors自定义错误日志 2.include_path设置包含路径 3.php_va ...
- 如何在IDEA上配置Maven
IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的Java开发工具之一, IDEA是JetBrains公司的产品,现在有逐步取代老牌Java ...
- win7下查看进程端口
一. 查看所有进程占用的端口 在开始-运行-cmd,输入:netstat –ano 可以查看所有进程 二.查看占用指定端口的程序 当你在用tomcat发布程序时,经常会遇到端口被占用的情况,我们想知道 ...
- ArcGIS 要素类整体平移工具-arcgis/arcpy/模型构建器案例实习教程
ArcGIS 要素类整体平移工具-arcgis/arcpy/模型构建器案例实习教程 联系方式:谢老师,135-4855_4328,xiexiaokui#qq.com 目的:对整个要素类,按指定偏移距离 ...
- nginx-rtmp
最近使用ffmpeg推流为rtmp,进行直播.记录一下nginx-rtmp的配置.因为我们要添加ngin-rtmp模块,所以不能直接apt安装. 下载niginx和nginx-rtmp-module的 ...