P5322 BJOI2019 排兵布阵

文章探讨了一种策略游戏的模型转化,其中涉及如何用最少的资源打败对手。通过分析得出关键结论,将问题转换为分组背包问题。给定每个城堡的士兵部署信息,目标是优化决策以最大化积分,这转化为选择特定体积和价值的物品。提供的C++代码实现了一个解决方案,计算最大可能的积分,其时间复杂度为O(ns(logs))。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

P5322 BJOI2019 排兵布阵

本题主要考察对模型的转化能力。

首先要察觉两条性质:

  • 对于一个城堡,想打败一个玩家的同时用最少的士兵,肯定是正好派出这个玩家在这个城堡派出的士兵数量的二倍加一名士兵。
  • 在一个城堡上,打败了一个在这个城堡派出士兵数量为 \(x\) 的玩家,就可以顺便打败所有在这个城堡派出士兵数量 \(\le x\) 的玩家。

这两条性质可以推出一条关键结论:在总共 \(s\) 场对决中,如果想要占有第 \(i\) 个城堡恰好 \(k\) 次,拿到 \(k \times i\) 的积分,就必须打败 \(k\) 个玩家,为此我们应该找到在第 \(i\) 个城堡上,\(s\) 名玩家分别派出的士兵数量里的第 \(k\) 小的那个士兵数量(不妨设为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值