分析

 代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod = ;
const int g = ;
int p[],inv[],G,cc[][],a[],b[],c[],d[],r[];
inline int pw(int x,int p){
int res=;
while(p){
if(p&)res=1ll*res*x%mod;
x=1ll*x*x%mod;
p>>=;
}
return res;
}
inline void ntt(int a[],int n,int f){
int i,j,k,now;
for(i=;i<n;i++)if(i<r[i])swap(a[i],a[r[i]]);
for(k=;k<n;k<<=){
if(f==)now=g;
else now=G;
int wn=pw(now,(mod-)/(k<<));
for(i=;i<n;i+=(k<<)){
int w=,p,q;
for(j=;j<k;j++,w=1ll*w*wn%mod){
p=a[i+j],q=1ll*a[i+j+k]*w%mod;
a[i+j]=(p+q)%mod;
a[i+j+k]=(p-q+mod)%mod;
}
}
}
}
inline int get_sum(int n,int A,int B,int C,int D){
int i,j,k,m=,len=;
if(n>A+B+C+D||n<)return ;
while(m<((A+B+C+D)<<))m<<=,len++;
for(i=;i<m;i++)r[i]=((r[i>>]>>)|((i&)<<(len-)));
for(i=;i<m;i++)a[i]=(i<=A)?inv[i]:;
for(i=;i<m;i++)b[i]=(i<=B)?inv[i]:;
for(i=;i<m;i++)c[i]=(i<=C)?inv[i]:;
for(i=;i<m;i++)d[i]=(i<=D)?inv[i]:;
ntt(a,m,),ntt(b,m,),ntt(c,m,),ntt(d,m,);
for(i=;i<m;i++)a[i]=1ll*a[i]*b[i]%mod*c[i]%mod*d[i]%mod;
ntt(a,m,-);
return 1ll*p[n]*a[n]%mod*pw(m,mod-)%mod;
}
signed main(){
int n,A,B,C,D,i,j,k;
G=pw(g,mod-);
p[]=;
for(i=;i<=;i++)p[i]=1ll*p[i-]*i%mod;
inv[]=pw(p[],mod-);
for(i=;i>=;i--)inv[i]=1ll*inv[i+]*(i+)%mod;
for(i=;i<=;i++)cc[i][]=cc[i][i]=;
for(i=;i<=;i++)
for(j=;j<i;j++)cc[i][j]=(cc[i-][j]+cc[i-][j-])%mod;
scanf("%lld%lld%lld%lld%lld",&n,&A,&B,&C,&D);
int Ans=;
for(i=;i<=n/;i++){
int res=(i&)?-:;
res*=cc[n-*i][i];
res=1ll*res*get_sum(n-*i,A-i,B-i,C-i,D-i)%mod;
Ans=(Ans+res+mod)%mod;
}
printf("%lld\n",Ans);
return ;
}

p5339 [TJOI2019]唱、跳、rap和篮球的更多相关文章

  1. [bzoj5510]唱跳rap和篮球

    显然答案可以理解为有(不是仅有)0对情况-1对情况+2对情况-- 考虑这个怎么计算,先计算这t对情况的位置,有c(n-3t,t)种情况(可以理解为将这4个点缩为1个,然后再从中选t个位置),然后相当于 ...

  2. 【题解】Luogu P5339 [TJOI2019]唱、跳、rap和篮球

    原题传送门 这题zsy写的是\(O(n^2)\),还有NTT\(O(n^2\log n)\)的做法.我的是暴力,\(O(\frac{a b n}{4})\),足够通过 考虑设\(f(i)\)表示序列中 ...

  3. Luogu P5339 [TJOI2019]唱、跳、rap和篮球

    题目 设\(f_i\)表示从\((a-4i,b-4i,c-4i,d-4i)\)中选\(n-4i\)个排队的方案数. 那么我们可以容斥,答案为\(\sum\limits_{i=0}^{lim}(-1)^ ...

  4. 将Android手机无线连接到Ubuntu实现唱跳Rap

    您想要将Android设备连接到Ubuntu以传输文件.查看Android通知.以及从Ubuntu桌面发送短信 – 你会怎么做?将文件从手机传输到PC时不要打电话给自己:使用GSConnect就可以. ...

  5. [TJOI2019]唱、跳、rap和篮球_生成函数_容斥原理_ntt

    [TJOI2019]唱.跳.rap和篮球 这么多人过没人写题解啊 那我就随便说说了嗷 这题第一步挺套路的,就是题目要求不能存在balabala的时候考虑正难则反,要求必须存在的方案数然后用总数减,往往 ...

  6. [TJOI2019]唱、跳、rap和篮球——NTT+生成函数+容斥

    题目链接: [TJOI2019]唱.跳.rap和篮球 直接求不好求,我们考虑容斥,求出至少有$i$个聚集区间的方案数$ans_{i}$,那么最终答案就是$\sum\limits_{i=0}^{n}(- ...

  7. [luogu5339] [TJOI2019]唱、跳、rap和篮球(容斥原理+组合数学)(不用NTT)

    [luogu5339] [TJOI2019]唱.跳.rap和篮球(容斥原理+组合数学)(不用NTT) 题面 略 分析 首先考虑容斥,求出有i堆人讨论的方案. 可以用捆绑法,把每堆4个人捆绑成一组,其他 ...

  8. 「TJOI2019」唱、跳、rap 和篮球 题解

    题意就不用讲了吧-- 鸡你太美!!! 题意: 有 \(4\) 种喜好不同的人,分别最爱唱.跳. \(rap\).篮球,他们个数分别为 \(A,B,C,D\) ,现从他们中挑选出 \(n\) 个人并进行 ...

  9. [TJOI2019]唱,跳,rap,篮球(生成函数,组合数学,NTT)

    算是补了个万年大坑了吧. 根据 wwj 的题解(最准确),设一个方案 \(S\)(不一定合法)的鸡你太美组数为 \(w(S)\). 答案就是 \(\sum\limits_{S}[w(S)=0]\). ...

随机推荐

  1. BP神经网络反向传播之计算过程分解(详细版)

    摘要:本文先从梯度下降法的理论推导开始,说明梯度下降法为什么能够求得函数的局部极小值.通过两个小例子,说明梯度下降法求解极限值实现过程.在通过分解BP神经网络,详细说明梯度下降法在神经网络的运算过程, ...

  2. Eureka-server配置servlet.context-path后导致Eureka-client注册到server问题

    在springboot项目里配置了servlet.context-path(应用上下文路径),也称之为项目路径,该配置让项目URL后增加配置的值.如果在Eureka-server中配置该值,当然也会改 ...

  3. ex3 多分类和神经网络

    介绍 在本练习中,您将实现一对多逻辑回归和神经识别手写数字的网络.在开始编程之前练习,我们强烈建议观看视频讲座并完成相关主题的复习问题.要开始练习,您需要下载起始代码并将其内容解压缩到要完成练习的目录 ...

  4. 最全的 Java 知识总结- Github 日增 10 star

    项目地址: 如果觉得有帮助,希望大家给个 star 鼓励以下:同时也希望大家多多 fork,一起加入进来. 为什么选择做这个开源项目 首先,希望提高自己:因为选择做这个,自己肯定就会花时间去提高自己的 ...

  5. struts2导入多个xml引入报错<include>

    struts.xml <?xml version="1.0" encoding="UTF-8"?> <!-- 指定Struts 2配置文件的D ...

  6. pwd 显示当前所在的工作路径

    1.功能说明 pwd命令是“print working directory ”首字母缩写,显示当前目录的绝对路径. 2.语法格式 pwd [option] pwd 选项 3.命令参数 参数 参数说明 ...

  7. 基于Redis实现简单的分布式锁【理论】

    摘要 分布式锁在很多应用场景下是非常有效的手段,比如当运行在多个机器上的不同进程需要访问同一个竞争资源的时候,那么就会涉及到进程对资源的加锁和释放,这样才能保证数据的安全访问.分布式锁实现的方案有很多 ...

  8. Flutter-網絡請求

    Flutter 请求网络的三种方式 flutter 请求网络的方式有三种,分别是 Dart 原生的网络请求 HttpClient.第三方网络请求 http以及 Flutter 中的 Dio.我们可以比 ...

  9. jsp基础模板

    jsp页面基础模板 base.jsp <%@ page language="java" contentType="text/html; charset=UTF-8& ...

  10. ORM和JDBC

    为什么要用 ORM? 和 JDBC有何不一样? ORM(Object-Relational Mapping),对象关系映射,是一种思想,就是把Object转变成数据库中的记录,或者把数据库中的记录转变 ...