https://www.cnblogs.com/cjyyb/p/10900993.html

 #include<cstdio>
#include<algorithm>
#define rep(i,l,r) for (int i=(l); i<=(r); i++)
using namespace std; const int N=,mod=;
int n,m,l,d,V,M,k,T,ans,v[N],w[N],s[N],is[N],fac[N],inv[N]; int C(int n,int m){ return n<m ? : 1ll*fac[n]*inv[m]%mod*inv[n-m]%mod; } 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;
} void init(int n){
fac[]=; rep(i,,n) fac[i]=1ll*fac[i-]*i%mod;
inv[n]=ksm(fac[n],mod-); for (int i=n; i; i--) inv[i-]=1ll*inv[i]*i%mod;
} int main(){
freopen("cube.in","r",stdin);
freopen("cube.out","w",stdout);
init(N-);
for (scanf("%d",&T); T--; ){
scanf("%d%d%d%d",&n,&m,&l,&k); V=1ll*n*m%mod*l%mod; M=min(min(n,m),l); ans=; d=;
rep(i,,M) v[i]=(V-1ll*(n-i)*(m-i)%mod*(l-i)%mod+mod)%mod;
rep(i,,M) w[i]=1ll*C(n,i)*C(m,i)%mod*C(l,i)%mod*fac[i]%mod*fac[i]%mod*fac[i]%mod;
s[]=; rep(i,,M) s[i]=1ll*s[i-]*v[i]%mod;
is[M]=ksm(s[M],mod-); for (int i=M; i; i--) is[i-]=1ll*is[i]*v[i]%mod;
rep(i,k,M) ans=(ans+1ll*d*C(i,k)%mod*w[i]%mod*is[i])%mod,d=mod-d;
printf("%d\n",ans);
}
return ;
}

[LOJ#3119][Luogu5400][CTS2019]随机立方体(容斥+DP)的更多相关文章

  1. Luogu5400 CTS2019随机立方体(容斥原理)

    考虑容斥,计算至少有k个极大数的概率.不妨设这k个数对应的格子依次为(k,k,k)……(1,1,1).那么某一维坐标<=k的格子会对这些格子是否会成为极大数产生影响.先将这样的所有格子和一个数集 ...

  2. HDU 5794 A Simple Chess (容斥+DP+Lucas)

    A Simple Chess 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5794 Description There is a n×m board ...

  3. [CF1086E]Beautiful Matrix(容斥+DP+树状数组)

    给一个n*n的矩阵,保证:(1)每行都是一个排列 (2)每行每个位置和上一行对应位置不同.求这个矩阵在所有合法矩阵中字典序排第几.考虑类似数位DP的做法,枚举第几行开始不卡限制,那么显然之前的行都和题 ...

  4. 【BZOJ3622】已经没有什么好害怕的了 容斥+DP

    [BZOJ3622]已经没有什么好害怕的了 Description Input Output Sample Input 4 2 5 35 15 45 40 20 10 30 Sample Output ...

  5. $bzoj2560$ 串珠子 容斥+$dp$

    正解:容斥+$dp$ 解题报告: 传送门$QwQ$ $umm$虽然题目蛮简练的了但还是有点难理解,,,我再抽象一点儿,就说有$n$个点,点$i$和点$j$之间有$a_{i,j}$条无向边可以连,问有多 ...

  6. LOJ3119 CTS2019 随机立方体 概率、容斥、二项式反演

    传送门 为了方便我们设\(N\)是\(N,M,L\)中的最小值,某一个位置\((x,y,z)\)所控制的位置为集合\(\{(a,b,c) \mid a = x \text{或} b = y \text ...

  7. [LOJ#3119][Luogu5405][CTS2019]氪金手游(DP+容斥)

    先考虑外向树的做法,显然一个点在其子树内第一个出现的概率等于它的权值除以它子树的权值和.于是f[i][j]表示i的子树的权值和为j时,i子树内所有数的相互顺序都满足条件的概率,转移直接做一个背包卷积即 ...

  8. [CTS2019]随机立方体(容斥+组合数学)

    这题七次方做法显然,但由于我太菜了,想了一会发现也就只会这么多,而且别的毫无头绪.发现直接做不行,那么,容斥! f[i]为至少i个极值的方案,然后这里需要一些辅助变量,a[i]表示选出i个三维坐标均不 ...

  9. 题解-CTS2019随机立方体

    problem \(\mathtt {loj-3119}\) 题意概要:一个 \(n\times m\times l\) 的立方体,立方体中每个格子上都有一个数,如果某个格子上的数比三维坐标中至少有一 ...

随机推荐

  1. 虚拟变量和独热编码的区别(Difference of Dummy Variable & One Hot Encoding)

    在<定量变量和定性变量的转换(Transform of Quantitative & Qualitative Variables)>一文中,我们可以看到虚拟变量(Dummy Var ...

  2. 虚拟变量陷阱(Dummy Variable Trap)

    虚拟变量陷阱(Dummy Variable Trap):指当原特征有m个类别时,如果将其转换成m个虚拟变量,就会导致变量间出现完全共线性的情况. 假设我们有一个特征“性别”,包含男性和女性两个类别,如 ...

  3. 在windows环境下可以裁剪.jpg格式的图片

    发现在windows操作系统下,可以利用图片编辑器裁剪.jpg格式的尺寸大小.其四方有四个推子.可以移动.注意点击右方的“确定”按钮.

  4. join 分割数组

    返回一个字符串.该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的. separator可以传可以传,不 ...

  5. gulp&sass安装配置

    首先需要nodejs和npm 然后安装Gulp及其Sass预处理器 在主题目录的根目录中,创建一个空的package.json并复制粘贴以下代码: { "author": &quo ...

  6. Tomcat启动时,控制台和IDEA控制台中文乱码解决方案

    Tomcat启动时 控制台中文乱码 cmd控制台 IDEA控制台 解决方案 cmd乱码 打开Tomcat目录下的apache-tomcat-8.5.47\conf\logging.properties ...

  7. 转:sql 经典50题--可能是你见过的最全解析

    题记:从知乎上看到的一篇文章,刚好最近工作中发现遇到的题目与这个几乎一样,可能就是从这里来的吧.^_^ 里面的答案没有细看,SQL求解重在思路,很多时候同一种结果可能有多种写法,比如题中的各科成绩取前 ...

  8. 缓存:修改Hosts不生效

    修改Hosts为何不生效,是DNS缓存? - Barret李靖 - 博客园https://www.cnblogs.com/hustskyking/p/hosts-modify.html 换个未打开过的 ...

  9. Android 编译 product 分区

    https://source.android.google.cn/devices/bootloader/product-partitions 编译 product 分区 Android 9​ 支持使用 ...

  10. C语言 字符串切割

    #include <stdio.h> #include <stdlib.h> #include <string.h> /* 字符串切割函数 */ /* 知识补充: ...