Solution -「CF 1096E」The Top Scorer
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的更多相关文章
- Solution -「CF 1342E」Placing Rooks
\(\mathcal{Description}\) Link. 在一个 \(n\times n\) 的国际象棋棋盘上摆 \(n\) 个车,求满足: 所有格子都可以被攻击到. 恰好存在 \(k\ ...
- Solution -「CF 487E」Tourists
\(\mathcal{Description}\) Link. 维护一个 \(n\) 个点 \(m\) 条边的简单无向连通图,点有点权.\(q\) 次操作: 修改单点点权. 询问两点所有可能路 ...
- Solution -「CF 757F」Team Rocket Rises Again
\(\mathcal{Description}\) link. 给定 \(n\) 个点 \(m\) 条边的无向图和一个源点 \(s\).要求删除一个不同与 \(s\) 的结点 \(u\),使得 ...
- Solution -「CF 804F」Fake bullions
\(\mathcal{Description}\) Link. 给定 \(n\) 个点的竞赛图,第 \(i\) 个点代表了 \(s_i\) 个人,每个人(0-based)可能有真金条.此后在 ...
- Solution -「CF 1119F」Niyaz and Small Degrees
\(\mathcal{Description}\) Link. 给定一棵 \(n\) 个结点的树,边有边权,对于每个整数 \(x\in[0,n)\),求出最少的删边代价使得任意结点度数不超过 ...
- Solution -「CF 1491H」Yuezheng Ling and Dynamic Tree
\(\mathcal{Description}\) Link. 做题原因:题目名. 给定一个长度 \(n-1\) 的序列 \(\{a_2,a_3,\cdots,a_n\}\),其描述了一棵 \ ...
- Solution -「CF 1132G」Greedy Subsequences
\(\mathcal{Description}\) Link. 定义 \(\{a\}\) 最长贪心严格上升子序列(LGIS) \(\{b\}\) 为满足以下两点的最长序列: \(\{b\}\) ...
- Solution -「CF 1361E」James and the Chase
\(\mathcal{Description}\) Link. 给定 \(n\) 个点 \(m\) 条边的有向弱连通图.称一个点是"好点"当且仅当从该点出发,不存在到同一点 ...
- Solution -「CF 1622F」Quadratic Set
\(\mathscr{Description}\) Link. 求 \(S\subseteq\{1,2,\dots,n\}\),使得 \(\prod_{i\in S}i\) 是完全平方数,并最 ...
- Solution -「CF 923F」Public Service
\(\mathscr{Description}\) Link. 给定两棵含 \(n\) 个结点的树 \(T_1=(V_1,E_1),T_2=(V_2,E_2)\),求一个双射 \(\varph ...
随机推荐
- PHP sprintf函数 bug
sprintf() 定义和用法 format参数 可能的格式值: %% - 返回一个百分号 % %b - 二进制数 %c - ASCII 值对应的字符 %d - 包含正负号的十进制数(负数.0.正数) ...
- Uniapp下GoEasy通知栏推送不工作问题排查记录
我们是uniapp开发的app,项目中的系统消息推送使用的是GoEasy Websocket 实时推送,上线一段时间后,客户反馈说,当app没有在前台运行时也需要想办法通知用户一些重要的系统通知.那么 ...
- 实例讲解看nsenter带你“上帝视角”看网络
摘要:本文重点关注进入目标进程的"网络ns"视角,即站在「容器中的进程视角」看待容器里面的网络世界,并在那个视角中执行命令. 本文分享自华为云社区<<跟唐老师学习云网络 ...
- .NET周刊【7月第2期 2023-07-09】
由于这周比较忙,只给出了标题和链接,没有具体的简介. 另外根据粉丝朋友的反馈,".NET周报" 更名为 ".NET周刊",希望大家喜欢 : ) 国内文章 Ava ...
- AI技术在软件测试中的应用和实践
随着人工智能(AI)技术的快速发展,它在各个领域都展现出了巨大的潜力和影响力.在软件测试领域,AI技术也越来越得到重视和应用.本文将探讨AI技术在软件测试中的应用和实践,重点关注chatGPT如何根据 ...
- GetX 关于报错 Null check operator used on a null value的解决
import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'logic.dart'; class Ge ...
- java使用SFTP连接服务器下载,上传文件
package mocha.framework.util; /* * @author Xiehj * @version 2019年10月28日 上午9:37:28 */ import java.io. ...
- Oracle定时任务(执行某一SQL语句)
Oracle定时任务,是定时调用存储过程,执行存储过程中的SQl语句 SQl实例 建立存储过程 -- 建立存储过程 CREATE or replace PROCEDURE UPDATE_AGENCY ...
- js 关于 replace 取值、替换第几个匹配项(两种方式:正则、普通字符串操作)
〇.前言 在日常开发中,经常遇到针对字符串的替换.截取,知识点比较碎容易混淆,特此总结一下,仅供参考. 一.替换第一个匹配项 字符串替换 let strtest = "0123测试repla ...
- 大数据请把文章推给想了解DLL的人
DLL(Dynamic Link Library)动态链接库在 webpack 中用来将可共享且不常改变的代码抽取成公共的库. 没有使用 DLL react 和 react-dom 在 react 项 ...