CTS 2019 Pearl
CTS2019 Pearl
每种颜色有奇偶两种情况,只有偶数和只有奇数个,其对应的的指数型生成函数分别为 \(\frac{e^x+e^{-x}}2,\frac{e^x-e^{-x}}2\)
考虑选出现奇数次的颜色受一定限制,所以本质上就是要求这个东西
=\frac{n!}{2^D}\sum_{i=0}^{n-2m} [(1+y)e^x+(1-y)e^{-x}]^D[x^ny^i] \\
=\frac{n!}{2^D}\sum_{i=0}^{n-2m}\sum_{k=0}^D \binom{D}{k}(1+y)^k(1-y)^{D-k}e^{(2k-D)x} [x^ny^i] \\
=\frac1{2^D}\sum_{i=0}^{n-2m}\sum_{k=0}^D (2k-D)^D\binom{D}{k}(1+y)^k(1-y)^{D-k} [y^i] \\
=\frac1{2^D}\sum_{k=0}^D (2k-D)^D\binom{D}{k} \sum_{i=0}^{n-2m} (1+y)^k(1-y)^{D-k} [y^i] \\
------------------------- \\
F(k,D)=\sum_{i=0}^{n-2m} (1+y)^k(1-y)^{D-k} [y^i] \\
=\sum_{i=0}^{n-2m} (2-(1-y))(1+y)^{k-1}(1-y)^{D-k} [y^i] \\
=\sum_{i=0}^{n-2m} 2(1+y)^{k-1}(1-y)^{D-k} [y^i] -\sum_{i=0}^{n-2m}(1+y)^{k-1}(1-y)^{D-k+1} [y^i] \\
=2F(k-1,D-1)-F(k-1,D)\\
------------------------- \\
G_i=F(0,i)\ = \sum_{j=0}^{n-2m} (1-y)^i[y^j]\ = \sum_{j=0}^{n-2m} (-1)^j\binom{i}{j}\\
= \sum_{j=0}^{n-2m} (-1)^j(\binom{i-1}{j-1}+\binom{i-1}{j})\\
= \sum_{j=0}^{n-2m} (-1)^j\binom{i-1}{j}-\sum_{j=0}^{n-2m-1}(-1)^j\binom{i-1}{j}\\
= (-1)^{n-2m}\binom{i-1}{n-2m} \\
------------------------- \\
F(k,D)=\sum_{i=0}^D F(0,i)2^{D-i}(-1)^{k-(D-i)}\binom{k}{D-i} \\
=k!\sum_{i=0}^D \frac{G_i(-1)^{k-(D-i)}2^{D-i}}{(D-i)!(k-(D-i))!} \\
=k!\sum_{i=0}^D \frac{G_{D-i}(-1)^{k-i}2^i}{i!(k-i)!} \\
------------------------- \\
T_i=\frac{G_{D-i}2^i}{i!} \ ,\ H_i=\frac{(-1)^i}{i!} \ ,\ F_i=(H*T)_i\times i!\\
Ans=\frac1{2^D}\sum_{k=0}^D (2k-D)^D\binom{D}{k}F_k \\
\]
一次卷积即可,注意要定义 \(G_0=1\)
式子没有仔细检查,有错见谅qwq
#include<bits/stdc++.h>
#define LL long long
using namespace std;
int read(){
int nm=0,fh=1; char cw=getchar();
for(;!isdigit(cw);cw=getchar()) if(cw=='-') fh=-fh;
for(;isdigit(cw);cw=getchar()) nm=nm*10+(cw-'0');
return nm*fh;
}
#define pii pair<int,int>
#define mp make_pair
#define mod 998244353
#define M 600010
#define inv3 332748118
#define inv2 499122177
namespace CALC{
inline int add(int x,int y){x+=y;return (x>=mod)?(x-mod):x;}
inline int mns(int x,int y){x-=y;return (x<0)?(x+mod):x;}
inline int mul(LL x,LL y){return (LL)x*(LL)y%mod;}
inline void upd(int &x,int y){x+=y;(x>=mod)?(x-=mod):0;}
inline void dec(int &x,int y){x-=y;(x<0)?(x+=mod):0;}
inline int qpow(int x,int sq){
int res=1;
for(;sq;sq>>=1,x=mul(x,x)) if(sq&1) res=mul(res,x);
return res;
}
}using namespace CALC;
int n,m,D,od[M],fac[M+2],ifac[M+2],G[M],H[M],T[M],F[M];
inline int C(int tot,int tk){return (tk<0||tot<tk)?0:mul(fac[tot],mul(ifac[tk],ifac[tot-tk]));}
inline void NTT(int *x,int len,int kd){
for(int i=1;i<len;i++) if(i<od[i]) swap(x[i],x[od[i]]);
for(int tt=1;tt<len;tt<<=1){
int wn=qpow(kd>0?3:inv3,(mod-1)/(tt<<1));
for(int st=0,now=1;st<len;st+=(tt<<1),now=1){
for(int pos=st;pos<st+tt;pos++,now=mul(now,wn)){
int t1=x[pos],t2=mul(now,x[pos+tt]);
x[pos]=add(t1,t2),x[pos+tt]=mns(t1,t2);
}
}
} if(kd>0) return; int rv=qpow(len,mod-2);
for(int i=0;i<len;i++) x[i]=mul(x[i],rv);
}
int main(){
D=read(),n=read(),m=read();
if(n-m-m>=D){printf("%d\n",qpow(D,n)); return 0;}
if(n<m+m){puts("0"); return 0;} fac[0]=1;
for(int i=1;i<=M;i++) fac[i]=mul(fac[i-1],i); ifac[M]=qpow(fac[M],mod-2);
for(int i=M;i>=1;i--) ifac[i-1]=mul(ifac[i],i); int len=1,nw=-1,ans=0;
while(len<=D+D) len<<=1,nw++;
for(int i=1;i<len;i++) od[i]=(od[i>>1]>>1)|((i&1)<<nw);
for(int i=1;i<=D;i++) G[i]=C(i-1,n-m-m); G[0]=1;
if(n&1){for(int i=1;i<=D;i++) G[i]=mns(0,G[i]);}
for(int i=0;i<=D;i++) H[i]=(i&1)?mns(0,ifac[i]):ifac[i];
for(int i=0;i<=D;i++) T[i]=mul(G[D-i],mul(ifac[i],qpow(2,i)));
NTT(T,len,1),NTT(H,len,1);
for(int i=0;i<len;i++) F[i]=mul(T[i],H[i]); NTT(F,len,-1);
for(int i=0;i<=D;i++) F[i]=mul(F[i],fac[i]);
for(int i=0;i<=D;i++) upd(ans,mul(qpow(mns(i+i,D),n),mul(C(D,i),F[i])));
printf("%d\n",mul(qpow(inv2,D),ans)); return 0;
}
CTS 2019 Pearl的更多相关文章
- THUPC&CTS 2019 游记
day ? 去THU报了个到. day? THUPC比赛日,三个人都没有智商,各种签到题不会做,被各路神仙吊着打.G题还猜了个假结论,做了好久都不对.最后顺利打铁了. 还顺便去看一下THUAC. da ...
- Solution -「CTS 2019」「洛谷 P5404」氪金手游
\(\mathcal{Description}\) Link. 有 \(n\) 张卡牌,第 \(i\) 张的权值 \(w_i\in\{1,2,3\}\),且取值为 \(k\) 的概率正比于 \ ...
- ZROI 暑期高端峰会 A班 Day1 组合计数
AGC036F Square Constriants 一定有 \(l_i<p_i\le r_i\). 考虑朴素容斥,枚举每个数是 \(\le l_i\) 还是 \(\le r_i\).对于 \( ...
- CTS & APIO 2019 游记
写在前面 算是省选后的第一轮大考. 去年因为某些原因并没有参加 CTSC 以及 APIO,还是有些遗憾,所以希望今年能有所收获. 也希望今年的 CTS 能延续去年的出题风格,这样我还能苟一两个题. 然 ...
- 【比赛游记】(THUPC,CTS,APIO)2019四连爆蛋记
5 月 11 日 坐飞机来到帝都,报道 THUPC. 试机题有皮配,不会. 晚上吃全聚德,喝星巴克.奢侈. 5 月 12 日 早上打 THUPC. 咕到 9 点半开始,到 2 点半结束.
- SDOI 2019 R1游记
$SDOI$ $2019$ $R1$游记 昨天才刚回来,今天就来写游记啦! Day -5: 做了一下去年省选的Day1,感觉很神仙. Day -4: 做了一下去年省选的Day2,感觉还是很神仙. Da ...
- CTS&&APIO2019爆零记
如果你只好奇测试相关请跳至day 2 day 3 day 6 scoi 2019 之后 由于实力问题,省选的时候排名在三十多,显然是没有进队.不过可能是受过的打击比较多,所以还没有特别颓废,甚至连 ...
- THUPC&CTS&APIO2019:Far Away
流水账~ THUPC nmdwsmduliu! THUPC Day -INF~Day -2 大概就是自己做题和每周两次的考试,lsy和fcw两个外校的来吊打我们qwqqq THUPC Day -1 Z ...
- Android CTS中neverallow规则生成过程
CTS里面SELinux相关测试中neverallow测试项占绝大多数,Android系统开发者都应该知道,在修改sepolicy时,需要确保不能违反这些neverallow规则,不然会过不了CTS. ...
随机推荐
- 【BZOJ1132】[POI2008]Tro 几何
[BZOJ1132][POI2008]Tro Description 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Input 第一行给出数字N,N在[3,3000 ...
- Python菜鸟之路:Python基础-模块
什么是模块? 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护.为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,分组的规则就是把实现了某个 ...
- 浅谈公平组合游戏IGC
浅谈公平组合游戏IGC IGC简介 一个游戏满足以下条件时被叫做IGC游戏 (前面三个字是自己YY的,不必在意) 竞争性:两名玩家交替行动. 公平性:游戏进程的任意时刻,可以执行的操作和操作者本人无关 ...
- Android系统移植与调试之------->如何修改Android设备添加重启、飞行模式、静音模式等功能(二)
今天要说的是为Android设备添加重启.飞行模式.静音模式按钮,客户需求中需要添加这项功能,在长按电源键弹出的菜单中没有这些选项,谨以此文记录自己添加这个功能的过程. 首先找到长按电源键弹出的对话框 ...
- 使用apt-get 安装后的mysql 登录问题
当使用apt-get安装mysql后,ubuntu会自动生成一个用户名和密码.所以在第一次登陆时会报如下错误 ERROR 1045 (28000): Access denied for user 'd ...
- python 学习2:生成器,迭代器,装饰器
1.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万 个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那 ...
- iOS 动态修改导航栏颜色 UINavigationBar
示例 所谓动态修改 意思是 在当前页面滚动的过程中 亦或 是在 触发返回事件\进入一个新的页面 导航栏的动态变化 由于系统级别的navBar 高度集成 很多自己想实现的功能 很不好弄 如果是通过 ...
- Video Brightness Enhancement
Tone Mapping原是摄影学中的一个术语,因为打印相片所能表现的亮度范围不足以表现现实世界中的亮度域,而如果简单的将真实世界的整个亮度域线性压缩到照片所能表现的亮度域内,则会在明暗两端同时丢失很 ...
- 声明:关于该博客部分Java等方向知识参考来源的说明
[声明] 该博客部分代码是通过学习黑马程序员(传智播客)视频后,参考毕向东.张孝祥.杨中科等老师的公开课视频中讲解的代码,再结合自己的理解,自己手敲上去的,一方面加深自己的理解和方便以后自己用到的时候 ...
- stack-铁轨问题
每辆火车都从A方向驶入车站,再从B方向驶出车站,同时它的车厢可以进行某种形式的重新组合.假设从A方向驶来的火车有n节车厢(n<1000),分别按顺序编号为1,2,...,n.假定在进入车站之前每 ...