Description

Link.

小明在打比赛,包括小明自己一共有 \(p\) 名选手参赛,每个人的得分是一个非负整数。最后的冠军是得分最高的人,如果得分最高的人有多个,就等概率从这些人中选一个当冠军。

现在小明已知了自己的得分大于等于 \(r\),所有选手的得分和为 \(s\)。求小明获胜的概率,结果对 \(998244353\) 取模。

Solution

抄了个 LJC00118 的非 DP 做法。

考虑直接统计总方案数和合法方案数。

总方案数即把 \(s-r\) 个无标号小球放进 \(p\) 个可为空的有标号小盒里,那么式子就是 \(\dbinom{s-r+p-1}{p-1}\)。

对于合法方案数,枚举有 \(i\) 个人与自己同分为 \(j\),则这部分的答案为 \(\frac{\binom{n-1}{i-1}}{i}\times{\bf f}(n-i,s-ij,j)\)。

\({\bf f}(a,b,c)\) 为 \(a\) 个人,总分 \(b\),所有人严格小于 \(c\) 的方案,容斥算。

#include<bits/stdc++.h>
typedef long long LL;
const int MOD=998244353;
void exGCD(int one,int ano,int &x,int &y) {
if(ano==0) {
x=1;
y=0;
}
else {
exGCD(ano,one%ano,y,x);
y-=(one/ano)*x;
}
}
int inv(int val) {
int res,w;
exGCD(val,MOD,res,w);
return (res%MOD+MOD)%MOD;
}
int far[5110],exfar[5110];
int C(int n,int k) {
if(n<k) return 0;
else return LL(far[n])*exfar[k]%MOD*exfar[n-k]%MOD;
}
int s,r,n,ans;
int f(int a,int b,int c) { // a persons exist, sum of scores is b, everyone's score < c
if(a==0) {
if(b==0) return 1;
else return 0;
}
int res=0,cur=1;
for(int i=0;i<=a && i*c<=b;++i) {
res=(res+LL(cur)*C(b-i*c+a-1,a-1)%MOD*C(a,i)%MOD+MOD)%MOD;
cur=MOD-cur;
}
return res;
}
int main() {
scanf("%d %d %d",&n,&s,&r);
far[0]=1;
for(int i=1;i<=s+n;++i) far[i]=LL(far[i-1])*i%MOD;
for(int i=0;i<=s+n;++i) exfar[i]=inv(far[i]);
for(int i=1;i<=n;++i) {
for(int j=r;j<=s && i*j<=s;++j) ans=(ans+LL(C(n-1,i-1))*f(n-i,s-i*j,j)%MOD*inv(i)%MOD)%MOD;
}
printf("%d\n",int(LL(ans)*inv(C(s-r+n-1,n-1))%MOD));
return 0;
}

Solution -「CF 1096E」The Top Scorer的更多相关文章

  1. Solution -「CF 1342E」Placing Rooks

    \(\mathcal{Description}\)   Link.   在一个 \(n\times n\) 的国际象棋棋盘上摆 \(n\) 个车,求满足: 所有格子都可以被攻击到. 恰好存在 \(k\ ...

  2. Solution -「CF 487E」Tourists

    \(\mathcal{Description}\)   Link.   维护一个 \(n\) 个点 \(m\) 条边的简单无向连通图,点有点权.\(q\) 次操作: 修改单点点权. 询问两点所有可能路 ...

  3. Solution -「CF 757F」Team Rocket Rises Again

    \(\mathcal{Description}\)   link.   给定 \(n\) 个点 \(m\) 条边的无向图和一个源点 \(s\).要求删除一个不同与 \(s\) 的结点 \(u\),使得 ...

  4. Solution -「CF 804F」Fake bullions

    \(\mathcal{Description}\)   Link.   给定 \(n\) 个点的竞赛图,第 \(i\) 个点代表了 \(s_i\) 个人,每个人(0-based)可能有真金条.此后在 ...

  5. Solution -「CF 1119F」Niyaz and Small Degrees

    \(\mathcal{Description}\)   Link.   给定一棵 \(n\) 个结点的树,边有边权,对于每个整数 \(x\in[0,n)\),求出最少的删边代价使得任意结点度数不超过 ...

  6. Solution -「CF 1491H」Yuezheng Ling and Dynamic Tree

    \(\mathcal{Description}\)   Link. 做题原因:题目名.   给定一个长度 \(n-1\) 的序列 \(\{a_2,a_3,\cdots,a_n\}\),其描述了一棵 \ ...

  7. Solution -「CF 1132G」Greedy Subsequences

    \(\mathcal{Description}\)   Link.   定义 \(\{a\}\) 最长贪心严格上升子序列(LGIS) \(\{b\}\) 为满足以下两点的最长序列: \(\{b\}\) ...

  8. Solution -「CF 1361E」James and the Chase

    \(\mathcal{Description}\)   Link.   给定 \(n\) 个点 \(m\) 条边的有向弱连通图.称一个点是"好点"当且仅当从该点出发,不存在到同一点 ...

  9. Solution -「CF 1622F」Quadratic Set

    \(\mathscr{Description}\)   Link.   求 \(S\subseteq\{1,2,\dots,n\}\),使得 \(\prod_{i\in S}i\) 是完全平方数,并最 ...

  10. Solution -「CF 923F」Public Service

    \(\mathscr{Description}\)   Link.   给定两棵含 \(n\) 个结点的树 \(T_1=(V_1,E_1),T_2=(V_2,E_2)\),求一个双射 \(\varph ...

随机推荐

  1. C++面试八股文:struct、class和union有哪些区别?

    某日小二参加XXX科技公司的C++工程师开发岗位5面: 面试官:struct和class有什么区别? 小二:在C++中,struct和class的唯一区别是默认的访问控制.struct默认的成员是pu ...

  2. JS异步解决方案及优缺点

    1. 回调函数 优点: 解决了同步的问题(只要有一个任务耗时长后面的任务都会等待,会拖延程序执行) 缺点: 回调地狱  不能用try  catch捕获  不能用 return setTimeout(( ...

  3. CANoe学习笔记(二):创建第一个事件触发帧(基于LIN)

    内容: 创建一个事件触发帧: 包含几个不同无条件帧: 事件触发帧的触发: 事先准备: 创建三个文件夹,用来放不同类型文件: 工程创建 新建一个Lin工程,双击即可,然后命名为LINconf保存. 创建 ...

  4. 逍遥自在学C语言 | 指针函数与函数指针

    前言 在C语言中,指针函数和函数指针是强大且常用的工具.它们允许我们以更灵活的方式处理函数和数据,进而扩展程序的功能. 本文将介绍指针函数和函数指针的概念,并讲解一些常见的应用示例. 一.人物简介 第 ...

  5. Taurus .Net Core 微服务开源框架:Admin 插件【4-2】 - 配置管理-Mvc【含请求日志打印】

    前言: 继上篇:Taurus .Net Core 微服务开源框架:Admin 插件[4-1] - 配置管理-Kestrel[含https启用] 本篇继续介绍下一个内容: 1.系统配置节点:Mvc 配置 ...

  6. P2709 小B的询问题解

    本题需要用到莫队算法 关于莫队算法 莫队算法是一种离线算法,适用于序列中统计区间特定的目标的问题. 时间复杂度通常是 \(O(n \sqrt n)\) 或更高. P2709 小B的询问 点击查看原题 ...

  7. 嵌入式低功耗WiFi设备保活功耗分析

    (一)嵌入式低功耗设备介绍 在物联网(IoT)领域,设备可以使用以太网和无线网进行网络连接. 以太网: 网络稳定,带宽高,延迟低,但是以太网需要拉网布线,设备安装邻活便利性能差. 无线网络:安装位置灵 ...

  8. Hexo博客Next主题友链页面

    博客友链太多,需要自定义一个友情链接页面 link渲染文件 在 hexo/themes/next/layout 目录下建一个 link.swig文件,写入以下代码 {% block content % ...

  9. 关于 Task 简单梳理

    〇.前言 Task 是微软在 .Net 4.0 时代推出来的,也是微软极力推荐的一种多线程的处理方式. 在 Task 之前有一个高效多线程操作累 ThreadPool,虽然线程池相对于 Thread, ...

  10. python安装后pip用不了 cmd命令窗口提示:Did not provide a command

    遇到的问题: 解决方法: 首先,使用where pip找到我的pip的安装目录 其次,配置环境变量 环境变量已经配置,但是仍是使用的时候直接输入pip提示"Did not provide a ...