当前位置: 首页 > news >正文

[Luogu 13345] EGOI 2025:IMO

先根据排序方案确定最终顺序。下文称第 \(i\) 个人为最终排名为 \(i\) 的那个人,其原始编号为 \(id_i\),总成绩为 \(v_i\)

若第 \(i\) 个人公布了 \(c_i\) 道题,公布部分成绩为 \(s_i\),则可能成绩区间为 \([s_i, s_i + k(m - c_i)]\),有 \(s_i + k(m-c_i) + [id_i < id_{i-1}] \le s_{i-1}\)

考虑 DP,设 \(f(i, s)\) 表示前 \(i\) 个人,第 \(i\) 个人公布部分成绩 \(\ge s\),的最小公布部分总数。先考虑等于 \(s\),枚举 \((c, s)\)

\[f(i, s) = \min_{(c, s)} f(i - 1, s + k(m - c) + [id_i < id_{i-1}]) + c \]

然后取一轮后缀 \(\min\) 即可得到真实的 \(f(i, s)\)

可以通过暴力 DP 找出第 \(i\) 个人合法的 \((c, s)\)\(O(m)\) 阶段,\(O(m)\) 枚举 \(c\)\(O(mk)\) 枚举 \(s\),这部分复杂度 \(O(nm^3k)\)

事实上,因为 \(s \le v_i\),只有 \(s \in [v_{i+1}, v_i]\) 的可能是合法的,令 \(l_i = v_i - v_{i+1} + 1\),至多只有 \(ml_i\)\((c, s)\),且 \(\sum l_i = n + mk\)

为保证复杂度,通过从全部公布倒着 DP 未公布的部分找 \((c, s)\),单轮 \(O(m^2l_i)\),把 \(c\)__int128 压一下可以消掉一个 \(m\)

总时间复杂度:\(O(nm + m^2k)\)

http://www.hskmm.com/?act=detail&tid=19608

相关文章:

  • 详细介绍:flutter 编译报错java.util.zip.ZipException: zip END header not found
  • 又一通信芯片厂商完成数亿元融资!
  • 做题总结
  • VS2022激活秘钥
  • NOIP2025模拟赛24
  • grammar(?
  • 读人形机器人25伦理问题
  • 使用场景规则匹配模式代替复杂的if else条件判断
  • 9.28作业
  • 2025.9.28+7[未完]
  • 无需登录即可在管理员页面发现XSS漏洞的技术解析
  • 【操作系统】函数调用
  • 岐金兰与AI元人文概念的深度关联研究:从理论构想到实践应用
  • 维生素D,毛姆,我,还有停滞的3年
  • “一键并行搜索”的本地导航页实现
  • 常见NAS文件传输协议中SMB、FTP、NFS、 rsync、WebDAV服务各有何区别?
  • cgroup 使用
  • 在Java中原码反码补码的区别
  • 苍穹外卖-day02(新增员工,员工分页查询,启用禁用员工账号,编辑员工,导入分类模块功能代码) - a
  • 问题
  • 智慧决策的透明化路径:空白金兰契架构下的悟空备案制研究
  • 使用 preact 渲染组件到任何元素
  • 《ZeroTier教程》03-客户端配置 zerotier-cli常用命令 桥接和路由配置示例
  • XDG和桌面环境
  • JAVA 语法基础课程动手动脑及课后实验问题整理文档
  • python垃圾回收
  • Arduino IDE 离线更新ESP-32 lib包
  • CUDA编程(CUDA_By_Example笔记)
  • K8S部署Openwebui 服务(Nvidia版)
  • 传统AI对话:悟空也辛苦(ai元人文)