传送门


感觉自己越来越愚钝了qwq

先考虑从\(n-1\)个人里安排恰好\(k\)个人被碾压,然后再考虑如何分配分数,两者乘起来得到答案。

对于第一部分,可以考虑容斥:设\(f_i\)表示\(i\)个人被碾压,其他人随意分配是否被碾压的方案数,我们考虑所有比B成绩高的科目一定是由剩余的\(N-1-i\)个人构成,所以\(f_i = \prod\limits_{j=1}^M \binom{N - 1 - i}{r_j - 1}\)。那么我们要求的这一部分的答案就是\(\binom{N-1}{k} \sum\limits_{i=K}^{N-1} (-1)^{i-K} f_i \binom{i}{K}\)。

(悄悄说一句如果这里的容斥系数写成了\((-1)^{i-K}\)竟然有90分)

再考虑第二问。我们如果对于所有科目枚举B的分数,那么可以得到答案为\(\prod\limits_{i=1}^M \sum\limits_{j=1}^{u_i} j^{N-r_i} (u_i - j)^{r_i-1}\)。但是\(u_i\)太大而\(N\)很小,所以我们可以考虑枚举\(N\)个人总共出现的分数种数。又设\(g_{i,j}\)表示对于第\(i\)个学科,有\(j\)种分数分配给\(N\)个人的方案数,那么\(g_{i,j} = \sum\limits_{k=1}^{j} k^{N-r_i} (j - k)^{r_i-1}\)

我们知道如果恰好出现了\(j\)种分数,那么它的方案数乘上\(\binom{u_i}{j}\)就可以贡献答案,但是\(g_{i,j}\)显然求出的不只是出现\(j\)种分数的方案数,因为有可能某些分数没有出现,所以再次考虑容斥。设\(h_{i,j}\)表示对于第\(i\)个学科,恰好有\(j\)种分数出现的方案数,那么\(h_{i,j} = g_{i,j} - \sum\limits_{k=1}^{j-1} \binom{j}{k} h_{i,k}\)。这样就可以算出与上面\(O(\sum u_i)\)的式子结果相同的式子,而复杂度降为\(O(m^2n)\)。

代码

LOJ2026 JLOI/SHOI2016 成绩比较 组合、容斥的更多相关文章

  1. bzoj4710: [Jsoi2011]分特产 组合+容斥

    4710: [Jsoi2011]分特产 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 289  Solved: 198[Submit][Status] ...

  2. 【BZOJ4559】[JLoi2016]成绩比较 动态规划+容斥+组合数学

    [BZOJ4559][JLoi2016]成绩比较 Description G系共有n位同学,M门必修课.这N位同学的编号为0到N-1的整数,其中B神的编号为0号.这M门必修课编号为0到M-1的整数.一 ...

  3. bzoj3622已经没有什么好害怕的了 dp+组合+容斥(?)

    3622: 已经没有什么好害怕的了 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1033  Solved: 480[Submit][Status][ ...

  4. BZOJ.4559.[JLOI2016]成绩比较(DP/容斥 拉格朗日插值)

    BZOJ 洛谷 为什么已经9点了...我写了多久... 求方案数,考虑DP... \(f[i][j]\)表示到第\(i\)门课,还有\(j\)人会被碾压的方案数. 那么\[f[i][j]=\sum_{ ...

  5. BZOJ.4767.两双手(组合 容斥 DP)

    题目链接 \(Description\) 棋盘上\((0,0)\)处有一个棋子.棋子只有两种走法,分别对应向量\((A_x,A_y),(B_x,B_y)\).同时棋盘上有\(n\)个障碍点\((x_i ...

  6. BZOJ.2339.[HNOI2011]卡农(思路 DP 组合 容斥)

    题目链接 \(Description\) 有\(n\)个数,用其中的某些数构成集合,求构造出\(m\)个互不相同且非空的集合(\(m\)个集合无序),并满足每个数总共出现的次数为偶数的方案数. \(S ...

  7. bzoj3294[Cqoi2011]放棋子 dp+组合+容斥

    3294: [Cqoi2011]放棋子 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 755  Solved: 294[Submit][Status] ...

  8. bzoj 4767: 两双手 组合 容斥

    题目链接 bzoj4767: 两双手 题解 不共线向量构成一组基底 对于每个点\((X,Y)\)构成的向量拆分 也就是对于方程组 $Ax * x + Bx * y = X $ \(Ay * x + B ...

  9. codeforces 571A--Lengthening Sticks(组合+容斥)

    A. Lengthening Sticks time limit per test 1 second memory limit per test 256 megabytes input standar ...

随机推荐

  1. Mac版微信无法安装之始末

    前言 Mac版微信安装不了...纠结了一周时间 ̄□ ̄||... 今天终于可以登录了(虽然还是没有安装到电脑上,但可以使用了) 因为之前也查了很多,有人遇到,但是没有可以解决我这个问题的方法, 浪费了很 ...

  2. solr(一) 单节点安装部署

    一.solr简介 1.什么是solr? Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件 ...

  3. Docker快速部署gitlab应用实战

    Gitlab是一个用于仓库管理系统开源项目,使用Git作为代码管理工具,并在此基础上搭建的web服务,可通过web界面进行访问公开或者私人项目,拥有类似于GIthub类似的功能,能够浏览源代码,可管理 ...

  4. 服务器收不到支付宝notify_url异步回调请求的问题排查

    小背景 最近在调整支付宝支付的功能时发现,不能够正常接收支付宝付款成功之后的回调通知了,从代码到配置最后到服务器配置都排查了一遍,最终发现问题原因竟然是因为我们的回调地址notify_url是http ...

  5. IE安全限制

    在安全级别下面设置置进行如下调整: A.ActiveX控件自动提示:启用 B.对标记为可安全执行脚本的ActiveX控件执行脚本:启用 C.对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本 ...

  6. Centos 安装 zookeeper

    下载 下载地址:http://archive.apache.org/dist/zookeeper/ [root@localhost bin]# wget http://archive.apache.o ...

  7. JdkDynamicAopProxy 拦截器链的获得与递归执行

    JdkDynamicAopProxy类的invoke方法 1.获得拦截器链 List<Object> chain = this.advised.getInterceptorsAndDyna ...

  8. EFProf用法

    SQL Server Profiler用来跟踪应用程序发送到SQL Server中的SQL语句,用于检测性能,查找问题.Entity Framework 也有它的跟踪工具EFProf,用于跟踪Enti ...

  9. 运维笔记--linux下忘记mysql root密码

    补充链接:Windows下忘记密码处理: https://www.cnblogs.com/hellojesson/p/5972950.html 场景描述: Linux环境下忘记 root 密码, 1. ...

  10. unable to lock the administration错误解决

    在ubantu系统上,使用 apt-get 命令或者其相对更新的APT 管理工具时,遇到 unable to lock the administration directory (/var/lib/d ...