LOJ2026 JLOI/SHOI2016 成绩比较 组合、容斥
感觉自己越来越愚钝了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 成绩比较 组合、容斥的更多相关文章
- bzoj4710: [Jsoi2011]分特产 组合+容斥
4710: [Jsoi2011]分特产 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 289 Solved: 198[Submit][Status] ...
- 【BZOJ4559】[JLoi2016]成绩比较 动态规划+容斥+组合数学
[BZOJ4559][JLoi2016]成绩比较 Description G系共有n位同学,M门必修课.这N位同学的编号为0到N-1的整数,其中B神的编号为0号.这M门必修课编号为0到M-1的整数.一 ...
- bzoj3622已经没有什么好害怕的了 dp+组合+容斥(?)
3622: 已经没有什么好害怕的了 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1033 Solved: 480[Submit][Status][ ...
- BZOJ.4559.[JLOI2016]成绩比较(DP/容斥 拉格朗日插值)
BZOJ 洛谷 为什么已经9点了...我写了多久... 求方案数,考虑DP... \(f[i][j]\)表示到第\(i\)门课,还有\(j\)人会被碾压的方案数. 那么\[f[i][j]=\sum_{ ...
- BZOJ.4767.两双手(组合 容斥 DP)
题目链接 \(Description\) 棋盘上\((0,0)\)处有一个棋子.棋子只有两种走法,分别对应向量\((A_x,A_y),(B_x,B_y)\).同时棋盘上有\(n\)个障碍点\((x_i ...
- BZOJ.2339.[HNOI2011]卡农(思路 DP 组合 容斥)
题目链接 \(Description\) 有\(n\)个数,用其中的某些数构成集合,求构造出\(m\)个互不相同且非空的集合(\(m\)个集合无序),并满足每个数总共出现的次数为偶数的方案数. \(S ...
- bzoj3294[Cqoi2011]放棋子 dp+组合+容斥
3294: [Cqoi2011]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 755 Solved: 294[Submit][Status] ...
- bzoj 4767: 两双手 组合 容斥
题目链接 bzoj4767: 两双手 题解 不共线向量构成一组基底 对于每个点\((X,Y)\)构成的向量拆分 也就是对于方程组 $Ax * x + Bx * y = X $ \(Ay * x + B ...
- codeforces 571A--Lengthening Sticks(组合+容斥)
A. Lengthening Sticks time limit per test 1 second memory limit per test 256 megabytes input standar ...
随机推荐
- last-child为啥不生效
last-child基本定义 指定属于其父元素的最后一个子元素的 p 元素的背景色 如果你这样写是不会生效的 <div class="limit-border"> &l ...
- iwms后台编辑器无法粘贴word格式的解决方法
iwms后台编辑器用的是tiny_mce,默认会自动过滤word粘贴中的格式,以减小数据库的占用,但在word中辛苦做的字体和格式都不见了,可采用下方法关闭编辑器的自动清除格式功能. 编辑文件:\ti ...
- Linux 磁盘的分区
如果我们想在系统中新增一块硬盘,需要做什么呢? 1. 对磁盘进行分区,新建可用分区 2. 对该分区进行格式化,以创建系统可用的文件系统 3. 若想要仔细一点,可以对刚才新建好的文件系统进行检验 4. ...
- Hadoop运行原理总结(详细)
本编随笔是小编个人参照个人的笔记.官方文档以及网上的资料等后对HDFS的概念以及运行原理进行系统性地归纳,说起来真的惭愧呀,自学了很长一段时间也没有对Hadoop知识点进行归纳,有时候在实战中或者与别 ...
- 解决'python -m pip install --upgrade pip' 报错问题
再安装包的时候提示 You are using pip version 9.0.3, however version 10.0.1 is available.You should consider u ...
- 工具系列 | VScode Remote 远程开发与调试(告别SSH)
简介 最近VScode发布了远程编程与调试的插件Remote Development,使用这个插件可以在很多情况下代替vim直接远程修改与调试服务器上的代码,同时具备代码高亮与补全功能,就和在本地使用 ...
- 含有虚拟列的表 怎么用EXP导出?
最近导一个测试库,报有虚拟列的表不支持,如下: EXP-00107: Feature (VIRTUAL COLUMN) of column CTB_CLIENT_SUBMIT_TIME_MONTH i ...
- SpringBoot入门-概念(一)
SpringBoot是什么 Spring boot是一个构建在Spring框架之上.以一种更加简单快捷的方式来配置和运行web应用程序的开源框架. 为什么用SpringBoot 可以解决普通的java ...
- 本地jar包上传docker容器
先安装docker的注册服务器: [root@VM_0_7_centos ~]# docker run -d -p : --restart=always --name registry2 regist ...
- redis连接池——JedisPool和JedisCluster的介绍与使用
目录 Jedis使用方式的介绍 Redis连接池介绍 创建连接池配置文件 单机版的Redis连接池 集群版的Redis连接池 总结 Jedis使用方式的介绍 Jedis就是Java实现的操作Redis ...