【LOJ4632】[PKUSC2018]真实排名
【LOJ4632】[PKUSC2018]真实排名
题面
终于有题面啦!!!
题目描述
小 C 是某知名比赛的组织者,该比赛一共有 n 名选手参加,每个选手的成绩是一个非负整数,定义一个选手的排名是:成绩不小于他的选手的数量(包括他自己)。例如如果 3 位选手的成绩分别是 [1,2,2] ,那么他们的排名分别是 [3,2,2] 。
拥有上帝视角的你知道所有选手的实力,所以在考试前就精准地估计了每个人的成绩,设你估计的第 i 个选手的成绩为Ai,且由于你是上帝视角,所以如果不发生任何意外的话,你估计的成绩就是选手的最终成绩。
但是在比赛当天发生了不可抗的事故(例如遭受到了外星人的攻击),导致有一些选手的成绩变成了最终成绩的两倍,即便是有上帝视角的你也不知道具体是哪些选手的成绩翻倍了,唯一知道的信息是这样的选手恰好有 k 个。
现在你需要计算,经过了不可抗事故后,对于第 i 位选手,有多少种情况满足他的排名没有改变。
由于答案可能过大,所以你只需要输出答案对 998244353 取模的值即可。
输入格式
第一行两个正整数 n,k
第二行 n 个非负整数 A1..An
输出格式
输出n行,第 i 行一个非负整数 ansi,表示经过不可抗事故后,第 i 位选手的排名没有发生改变的情况数。
样例
样例输入
输出
提示与说明
对于10%的数据,有 1≤n≤151
对于35%的数据,有 1≤n≤103
另有10%的数据,满足每个人的成绩都互不相同
另有10%的数据,满足Ai≤105
另有10%的数据,满足k=85,0≤Ai≤6000
对于100%的数据,有1≤k<n≤105,0≤Ai≤109
题解
其实还是挺容易的qaq,只不过细节比较多
分别考虑你现在计算的那个位置选不选
如果不选,可以选比它大的或小于它12的。
那么假如我们钦定它选,则必须动[ai,2ai]的,
计算一下有多少,其余的随便选就行了。
每一种情况都预处理阶乘用组合数就好啦
代码
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(4)
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 2025成都.NET开发者Connect圆满结束