【容斥、插值】P3270 [JLOI2016]成绩比较
【容斥、插值】P3270 [JLOI2016]成绩比较
题目简述
- 有 \(n+1\) 个人,进行 \(m\) 场考试,第 \(i\) 场考试的可能得分是 \([0,U_i]\) 之间的整数。
- 假设你是其中一人,你知道每场考试的排名 \(r_i\)(相同分数算后排名),并且恰有 \(k\) 个人每一场考试的分数都不大于你。
- 求方案数,对 \(10^9+7\) 取模。
- \(n,m\leq 100\),\(U_i\leq10^9\)。
解题思路
很显然的计数分为三个部分:
- 确定被你碾压的 \(k\) 人。
- 确定每个人和你分数的大小关系。
- 确定每个人的分数。
对于第 \(1\) 部分,显然是 \(C_n^k\)。
对于第 \(2\) 部分,我们可以通过排名确定出每场比赛 \(i\) 有多少人分数 $\leq $ 你,多少人分数 \(>\) 你。那么由于已经确定出 \(k\) 个被碾压的人了,所以这 \(k\) 个人的分数 $\leq $ 你,我们的问题转换成在剩下的人当中去分配 \(R_i\) 使得每个人至少有一个 \(>\) 你的分数。很显然的可以使用容斥。
由于 \(k\) 个被碾压者已经确定,记剩下的人 \(N=n-k\),假设有:
\]
表示有至多 \(i\) 个人被你碾压,很显然的容斥为:
\]
对于第三部分,每一场考试是独立的,我们可以写出式子:
\]
我们不难发现原式改写成 \(\sum_{k=0}^{x} k^{n-r_i+1}\times (U_i-k)^{r_i-1}\) 是关于 \(x\) 的 \(n+1\) 次多项式,所以我们对于 \(\leq n+2\) 的值暴力枚举,然后使用插值求出 \(x=U_i\) 的值即可。
暴力拉格朗日的复杂度 \(O(n^2\log V)\),可以通过。我们也可以优化到 \(O(n\log n)\) 的拉格朗日。
参考代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define MP make_pair
const int MAXN=105;
const int MOD=1e9+7;
int n,m,k;
int x[MAXN],r[MAXN];
ll fac[MAXN],inf[MAXN];
ll ksm(ll a,int b){ll res=1;while(b){if(b&1)res=res*a%MOD;a=a*a%MOD,b>>=1;}return res;}
ll inv(ll a){return ksm(a,MOD-2);}
void init(){
fac[0]=inf[0]=1;
for(int i=1;i<MAXN;i++)
fac[i]=fac[i-1]*i%MOD,
inf[i]=inv(fac[i]);
return;
}
ll C(int n,int m){if(n>m) return 0;return fac[m]*inf[n]%MOD*inf[m-n]%MOD;}
ll sgn(int x){return (x&1)?-1:1;}
ll Part_2(){
ll f[MAXN];
for(int i=0;i<=n;i++){
f[i]=1;
for(int j=1;j<=m;j++)
f[i]=f[i]*C(r[j]-1,i)%MOD;
}
ll res=0;
int d=n-k;
for(int i=0;i<=d;i++)
res=(res+sgn(d-i)*f[i]%MOD*C(i,d)%MOD+MOD)%MOD;
return res;
}
ll Func(ll x,int a,int b){
ll y[MAXN],res=0;
for(int i=1;i<=n+2;i++){
res+=ksm(i,a)*ksm(x-i+MOD,b)%MOD;
res%=MOD;
y[i]=res;
}
ll ans=0;
for(int i=1;i<=n+2;i++){
res=y[i];
for(int j=1;j<=n+2;j++)
if(i!=j)
res=res*(x-j+MOD)%MOD*inv(i-j+MOD)%MOD;
ans+=res;ans%=MOD;
}
return ans;
}
int main(){
ios::sync_with_stdio(false);
init();
cin>>n>>m>>k;n--;
for(int i=1;i<=m;i++)
cin>>x[i];
for(int i=1;i<=m;i++)
cin>>r[i];
ll ans=C(k,n)*Part_2()%MOD;
for(int i=1;i<=m;i++)
ans=ans*Func(x[i],n-r[i]+1,r[i]-1)%MOD;
cout<<ans;
return 0;
}
【容斥、插值】P3270 [JLOI2016]成绩比较的更多相关文章
- 洛谷 P3270 - [JLOI2016]成绩比较(容斥原理+组合数学+拉格朗日插值)
题面传送门 考虑容斥.我们记 \(a_i\) 为钦定 \(i\) 个人被 B 神碾压的方案数,如果我们已经求出了 \(a_i\) 那么一遍二项式反演即可求出答案,即 \(ans=\sum\limits ...
- LG4781 【模板】拉格朗日插值 和 JLOI2016 成绩比较
[模板]拉格朗日插值 题目描述 由小学知识可知,$n$个点$(x_i,y_i)$可以唯一地确定一个多项式 现在,给定$n$个点,请你确定这个多项式,并将$k$代入求值 求出的值对$998244353$ ...
- BZOJ4559&P3270[JLoi2016]成绩比较
题目描述 \(G\)系共有\(n\)位同学,\(M\)门必修课.这\(N\)位同学的编号为\(0\)到\(N-1\)的整数,其中\(B\)神的编号为\(0\)号.这\(M\)门必修课编号为\(0\)到 ...
- P3270 [JLOI2016]成绩比较 容斥 数论 组合数学 拉格朗日插值
LINK:成绩比较 大体思路不再赘述 这里只说几个我犯错的地方. 拉格朗日插值的时候 明明是n次多项式 我只带了n个值进去 导致一直GG. 拉格朗日插值的时候 由于是从1开始的 所以分母是\((i-1 ...
- P3270 [JLOI2016]成绩比较(拉格朗日插值)
传送门 挺神仙的啊-- 设\(f[i][j]\)为考虑前\(i\)门课程,有\(j\)个人被\(B\)爷碾压的方案数,那么转移为\[f[i][j]=\sum_{k=j}^{n-1}f[i-1][k]\ ...
- BZOJ.4559.[JLOI2016]成绩比较(DP/容斥 拉格朗日插值)
BZOJ 洛谷 为什么已经9点了...我写了多久... 求方案数,考虑DP... \(f[i][j]\)表示到第\(i\)门课,还有\(j\)人会被碾压的方案数. 那么\[f[i][j]=\sum_{ ...
- bzoj4559[JLoi2016]成绩比较 容斥+拉格朗日插值法
4559: [JLoi2016]成绩比较 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 261 Solved: 165[Submit][Status ...
- 【BZOJ4559】[JLoi2016]成绩比较 动态规划+容斥+组合数学
[BZOJ4559][JLoi2016]成绩比较 Description G系共有n位同学,M门必修课.这N位同学的编号为0到N-1的整数,其中B神的编号为0号.这M门必修课编号为0到M-1的整数.一 ...
- ●BZOJ 4559 [JLoi2016]成绩比较(容斥)
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4559 题解: 容斥,拉格朗日插值法. 结合网上的另一种方法,以及插值法,可以把本题做到 O( ...
- bzoj4558[JLoi2016]方 容斥+count
4558: [JLoi2016]方 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 452 Solved: 205[Submit][Status][D ...
随机推荐
- 站点用css一键变灰色
默哀站点变灰色效果看本站即可 css代码如下 <style>html{-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%); ...
- 脑科学与人工神经网络ANN的发展历程与最新研究
本文深入研究了ANN的基本概念.发展背景.应用场景以及与人脑神经网络的关系. 关注TechLead,分享AI全维度知识.作者拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,同济本复旦硕,复 ...
- PaddleNLP通用信息抽取技术UIE【一】产业应用实例:信息抽取{实体关系抽取、中文分词、精准实体标。情感分析等}、文本纠错、问答系统、闲聊机器人、定制训练
相关文章: 1.快递单中抽取关键信息[一]----基于BiGRU+CR+预训练的词向量优化 2.快递单信息抽取[二]基于ERNIE1.0至ErnieGram + CRF预训练模型 3.快递单信息抽取[ ...
- 【1】Pycharm 主题设置推荐Material Theme UI以及编辑环境配置(字体大小和颜色)
相关文章: [1]Pycharm 主题设置推荐Material Theme UI以及编辑环境配置(字体大小和颜色) [2]Pycharm插件推荐,超级实用!每个小trick都可以快速提升变成效率! [ ...
- Mac基于VMware安装CentOS
流程偏长,下一步根本点不完: 01 首先,明确下两款软件的版本信息: VMware是[VMware-Fusion-13.5.0] CentOS是[CentOS-7-x86_64-Minimal-190 ...
- CF1499
A 氵 B 如果 11 后出现了 00 就不行. C 枚举走几段. 横竖可以分开算. 一定是:除了费用最小的都是走长度 \(1\),费用最小的包揽剩下的. D \(c\cdot lcm(a,b)-d\ ...
- 2023年多校联训NOIP层测试7+【LGR-149-Div.3】洛谷基础赛 #2 & qw Round -1
普及模拟3 \(T1\) 最大生成树 \(100pts\) 简化题意:给定一个 \(n(1 \le n \le 1 \times 10^5)\) 个点的完全图,给定各点的点权 \(a_i(1 \le ...
- Linux 中竖线“|”与双竖线“||”的意思
linux中竖线'|',双竖线'||',&和&&的意思 对于初学者来说这几个意思可能只知道其中几个的意思,下面我们来看一下. 1.竖线'|' ,在linux中是作为管道符的,将 ...
- Laravel入坑指南(5)——请求与响应
作为互联网典型的Web应用,接收用户请求的数据,并将处理的结果向用户进行响应,是最基础也是最必备的功能.在原生的PHP中,我们常用$_POST.$_GET.$_REQUEST和$_FILES对不同的请 ...
- 如何申请免费的SSL证书和通配符证书
一,目前免费证书普遍存在的痛点 证书有效期普遍只有3个月 2023年12月22日阿里云官方发布公告,后续免费证书的有效期统一调整为3个月,我相信其它厂商很快也会做出调整. 调整为3个月有效期后,意味着 ...