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

题解:P12558 [UOI 2024] Heroes and Monsters

题面:

(这个没交洛谷,给学弟写的。)

\(O(n^3)\)

考虑直接求出所有 \(ans_i\),前缀和回答询问。
\(a,b\) 先排序。由于我们只关心英雄的集合,所以怪兽我们贪心选择,如果我们选这个英雄那么选最前面的怪兽,否则选后面第一个能打死自己的怪兽。显然,合法方案怪兽的前缀会被英雄打死,后缀会打死英雄,显然了就不证。
\(f_{i,j}\):前 i 个英雄匹配了 j 个怪兽的方案数。
这时我们发现我们选后面第一个能打死自己的怪兽可能会碍后面想打怪兽的英雄的事,所以枚举断点 \(k\)
我们让钦定去悲伤的英雄去选择 \([k+1,n]\) 的怪兽,高兴的英雄去选 \([1,k]\) 的怪兽。

\(f_{i,j}=f_{i-1,j-1}[b_j<a_i]+f_{i-1,j}[b_{k+1+(i-1-j)>a_i}]\)

\(O(n^2)\)

我们找到 \(a_p<b_k<a_{p+1}\) 这样的 \(p\)
那么 \([1,p]\) 的英雄肯定能找到比自己大的怪兽,\([p+1,n]\) 的英雄肯定能找到比自己小的怪兽,并且互不冲突。
那么我们只需要考虑前缀是否能找到比自己小的怪兽,后缀能否找到比自己大的怪兽。

\(f_{i,j}\)\([1,i]\) 的英雄 \(j\) 个找到了比自己小的怪兽的方案数。
\(g_{i,j}\)\([i,n]\) 的英雄 \(j\) 个找到了比自己大的怪兽的方案数。

下面是转移(\(g\) 我们倒着更新,那么肯定是取后缀怪兽):

\(f_{i,j}=f_{i-1,j-1}[b_j<a_i]+f_{i-1,j}\)
\(g_{i,j}=g_{i+1,j-1}[b_{n-(j-1)}>a_i]+g_{i+1,j}\)

那么我们枚举一个数 \(c\),表示 \([1,p]\)\(c\) 个高兴的英雄,那么 \([p+1,n]\)\((k-c)\) 个高兴的英雄。
直接合并就好了。

\(ans_m=\sum_{c=0}^m f_{p,c}×g_{p+1,n-p-(k-c)}\)

http://www.rkmt.cn/news/7768.html

相关文章:

  • 数据分析与产品、运营、市场之间如何有效对齐 - 详解
  • P14053 [SDCPC 2019] Median 题解
  • lQueryDef查询Evaluate报该几何不包含M值问题。
  • 我的首个RCE漏洞发现之旅:Apache ActiveMQ远程代码执行实战
  • 北京市社保费用差额补缴计算工具
  • 使用自签名SSL证书有什么风险?
  • US$149 Foxwell NT630 Elite ABS and Airbag Reset Tool with SAS
  • 【API接口】最新可用手机号归属地查询接口
  • UE5创建的对象无法用ai操控
  • 【API接口】最新可用番茄畅听接口
  • 【API接口】最新可用七猫短剧接口
  • 搜索百科(2):Apache Solr — 企业级搜索的开源先锋
  • 销售能力——Steam平台我们应该做什么游戏?
  • 2025.9.18总结
  • Java进制,数据类型拓展Unicode编码学习
  • 【转】[IDEA] 调试时怎么判断使用哪个配置文件
  • 软件工程学习日志2025.9.18
  • https://uupdump.net/
  • 初赛知识点复盘
  • Segment Analytics-iOS SDK - 专业用户行为追踪解决方案
  • 使用 Rust 与 Tesseract OCR 识别英文数字验证码
  • API安全解决方案选型指南:2025年五大关键维度与厂商推荐
  • 别迷茫了!计算机大一新生这样做,四年后远超同龄人 - 编程实战派
  • 解决ifconfig命令没有显示ens33 finalshell连接不上虚拟机
  • CRM管理专业的系统:从数据收集到价值挖掘
  • c/c++实现有栈协程
  • 高阶 INTJ 5w4 整合到 8,是完整的过程,从研究到实用(豆包)
  • hbase安装与配置
  • 发喷山火(volcano)+CF2119F Volcanic Eruptions 解题报告
  • PHP转Go系列 | PHP8 这些新函数让你眼前一亮