分析

 代码

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. const int mod = ;
  5. const int g = ;
  6. int p[],inv[],G,cc[][],a[],b[],c[],d[],r[];
  7. inline int pw(int x,int p){
  8. int res=;
  9. while(p){
  10. if(p&)res=1ll*res*x%mod;
  11. x=1ll*x*x%mod;
  12. p>>=;
  13. }
  14. return res;
  15. }
  16. inline void ntt(int a[],int n,int f){
  17. int i,j,k,now;
  18. for(i=;i<n;i++)if(i<r[i])swap(a[i],a[r[i]]);
  19. for(k=;k<n;k<<=){
  20. if(f==)now=g;
  21. else now=G;
  22. int wn=pw(now,(mod-)/(k<<));
  23. for(i=;i<n;i+=(k<<)){
  24. int w=,p,q;
  25. for(j=;j<k;j++,w=1ll*w*wn%mod){
  26. p=a[i+j],q=1ll*a[i+j+k]*w%mod;
  27. a[i+j]=(p+q)%mod;
  28. a[i+j+k]=(p-q+mod)%mod;
  29. }
  30. }
  31. }
  32. }
  33. inline int get_sum(int n,int A,int B,int C,int D){
  34. int i,j,k,m=,len=;
  35. if(n>A+B+C+D||n<)return ;
  36. while(m<((A+B+C+D)<<))m<<=,len++;
  37. for(i=;i<m;i++)r[i]=((r[i>>]>>)|((i&)<<(len-)));
  38. for(i=;i<m;i++)a[i]=(i<=A)?inv[i]:;
  39. for(i=;i<m;i++)b[i]=(i<=B)?inv[i]:;
  40. for(i=;i<m;i++)c[i]=(i<=C)?inv[i]:;
  41. for(i=;i<m;i++)d[i]=(i<=D)?inv[i]:;
  42. ntt(a,m,),ntt(b,m,),ntt(c,m,),ntt(d,m,);
  43. for(i=;i<m;i++)a[i]=1ll*a[i]*b[i]%mod*c[i]%mod*d[i]%mod;
  44. ntt(a,m,-);
  45. return 1ll*p[n]*a[n]%mod*pw(m,mod-)%mod;
  46. }
  47. signed main(){
  48. int n,A,B,C,D,i,j,k;
  49. G=pw(g,mod-);
  50. p[]=;
  51. for(i=;i<=;i++)p[i]=1ll*p[i-]*i%mod;
  52. inv[]=pw(p[],mod-);
  53. for(i=;i>=;i--)inv[i]=1ll*inv[i+]*(i+)%mod;
  54. for(i=;i<=;i++)cc[i][]=cc[i][i]=;
  55. for(i=;i<=;i++)
  56. for(j=;j<i;j++)cc[i][j]=(cc[i-][j]+cc[i-][j-])%mod;
  57. scanf("%lld%lld%lld%lld%lld",&n,&A,&B,&C,&D);
  58. int Ans=;
  59. for(i=;i<=n/;i++){
  60. int res=(i&)?-:;
  61. res*=cc[n-*i][i];
  62. res=1ll*res*get_sum(n-*i,A-i,B-i,C-i,D-i)%mod;
  63. Ans=(Ans+res+mod)%mod;
  64. }
  65. printf("%lld\n",Ans);
  66. return ;
  67. }

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. 20190925 On Java8 第二十二章 枚举

    第二十二章 枚举 基本 enum 特性 创建 enum 时,编译器会为你生成一个相关的类,这个类继承自 Java.lang.Enum. valueOf() 是在 Enum 中定义的 static 方法 ...

  2. C++期末

    华侨大学 面向对象程序设计(二) 试卷(A) 系别 计算机.软件工程.网络工程08 考试日期 2009年 06月29日 姓名 学号 成绩 一.选择题 (20分,每小题2分) ()关于重载函数在调用时匹 ...

  3. [Python3 填坑] 011 元组中有多个最值,索引出来的是哪一个

    目录 1. print( 坑的信息 ) 2. 开始填坑 (1) max() (2) min() (3) 结论 1. print( 坑的信息 ) 挖坑时间:2019/01/11 明细 坑的编码 内容 P ...

  4. [19/05/13-星期一] HTML_head标签 和 body标签_文本标签

    一.概念 概念:超文本标记语言 作用:需要将Java在后台根据用户的请求处理结果在浏览器显示给用户.数据已经过来了,但是显示可能比较凌乱,所以html应用而生,就像写作文要加标点看着舒服. 在浏览器中 ...

  5. 【转载】研发应该懂的binlog知识(上)

    ---------------------------------------------------------------------------------------------------- ...

  6. sublime text3插件安装及使用

    sublime官网下载地址:http://www.sublimetext.com/ 我用的是SubLime text3,插件安装命令地址:https://packagecontrol.io/insta ...

  7. Developer Express 第三方控件使用系列方法

    本人目前从事的开发工作主要是以C#语言进行的相关C/S的开发,在工作中也要求使用Developer Express第三方控件所以这一系列的控件使用说明都将以C#语言进行代码说明.平时工作中会慢慢的收集 ...

  8. A + B Problem II(1002)

    Problem Description I have a very simple problem for you. Given two integers A and B, your job is to ...

  9. 在Linux上下载和安装AAC音频编码器FAAC

    Linux上FAAC的安装 安装 下载 http://downloads.sourceforge.net/faac/faac-1.28.tar.gz 解压 tar zxvf faac-1.28.tar ...

  10. go中指针类型的用法小结

    代码 // 指针的用法 package main import ( "fmt" ) func main() { var i int = 100 // 输出i的地址 fmt.Prin ...