这题七次方做法显然,但由于我太菜了,想了一会发现也就只会这么多,而且别的毫无头绪。发现直接做不行,那么,容斥!

f[i]为至少i个极值的方案,然后这里需要一些辅助变量,a[i]表示选出i个三维坐标均不相同的i个极大值的方案数,g[i]表示i个极大的数任意一个至少有一维坐标相同的点的个数,h[i]表示g[i]的极值可以同时存在的方案数,那么有f[i]=C(nml,g[i])a[i]h[i](nml-g[i])!。

a[i]很容易求得,就是(∏(n-j)(m-j)(l-j))/i!,其中j∈[0,i),g[i]更好求,就是nml-(n-i)(m-i)(l-i)

然后要进行一些关于上升幂的运算,我这里打不出式子(因为太菜了不会LaTeX),所以就不打了。注意维护g[i]的前缀积,具体细节看code吧。

#include<bits/stdc++.h>
using namespace std;
const int N=5e6+,mod=;
int n,m,l,k,mn,ans,fac[N],inv[N],a[N],f[N],g[N],h[N],pre[N];
int calc(int x){return 1ll*(n-x)*(m-x)%mod*(l-x)%mod;}
int qpow(int a,int b)
{
int ret=;
while(b)
{
if(b&)ret=1ll*ret*a%mod;
a=1ll*a*a%mod,b>>=;
}
return ret;
}
int C(int a,int b){return 1ll*fac[a]*inv[b]%mod*inv[a-b]%mod;}
int main()
{
inv[]=inv[]=fac[]=;for(int i=;i<N;i++)inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
for(int i=;i<N;i++)fac[i]=1ll*fac[i-]*i%mod,inv[i]=1ll*inv[i-]*inv[i]%mod;
int T;scanf("%d",&T);
while(T--)
{
scanf("%d%d%d%d",&n,&m,&l,&k);
mn=min(n,min(m,l));
a[]=h[]=pre[]=;
for(int i=;i<=mn;i++)a[i]=1ll*a[i-]*calc(i-)%mod;
for(int i=;i<=mn;i++)g[i]=(1ll*g[i-]+calc(i-)-calc(i)+mod)%mod;
for(int i=;i<=mn;i++)pre[i]=1ll*pre[i-]*g[i]%mod;
pre[mn]=qpow(pre[mn],mod-);
for(int i=mn;i;i--)pre[i-]=1ll*pre[i]*g[i]%mod;
for(int i=;i<=mn;i++)f[i]=1ll*a[i]*pre[i]%mod;
ans=;
for(int i=k;i<=mn;i++)
if((i-k)&)ans=(ans-1ll*C(i,k)*f[i]%mod+mod)%mod;
else ans=(ans+1ll*C(i,k)*f[i])%mod;
printf("%d\n",ans);
}
}

最新文章

  1. ASP.NET MVC 路由(五)
  2. Java 积累复习用
  3. mac 安装nginx
  4. js相关参考资料
  5. Maya 脚本控制物体自转
  6. 福州月赛2057 DFS
  7. Effective STL
  8. GCC笔记
  9. Linux下如何进行FTP设置
  10. 将Controller中的数据传递到View中显示
  11. CSS display属性的值及作用
  12. 网络编程API-上 (基本API)
  13. Java排序算法之插入排序
  14. 面试题之-----String,StringBuffer,StringBuilder的区别
  15. @JsonIgnore注解可以实现不返回前端字段
  16. 前端 ----jQuery的介绍
  17. 彻底理解什么是原型链,prototype和__proto__的区别以及es5中的继承
  18. 500 Internal Privoxy Error
  19. Git使用基础篇(zz)
  20. Project facet jst.web.jstl has not been defined.

热门文章

  1. Swift之分割视图控制器-UISplitViewController
  2. [题解] Luogu P5641 【CSGRound2】开拓者的卓识
  3. python复习——数据输入输出
  4. 使用docker-sync解决docker for mac 启动的虚拟容器程序运行缓慢的问题
  5. 理解Spring Boot Actuator
  6. English Words and Expressions
  7. 题解 Luogu P2499: [SDOI2012]象棋
  8. 尝试解决 : Microsoft Visual C++ 14.0 is required 的问题
  9. 79.常用的返回QuerySet对象的方法使用详解: filter, exclude,annotate
  10. SQL基础教程(第2版)第6章 函数、谓词、CASE表达式:6-2 谓词