524. 愤怒的小鸟
题目链接
524. 愤怒的小鸟
Kiana 最近沉迷于一款神奇的游戏无法自拔。
简单来说,这款游戏是在一个平面上进行的。
有一架弹弓位于 处,每次 Kiana 可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形如 的曲线,其中 是 Kiana 指定的参数,且必须满足 。
当小鸟落回地面 (即 轴) 时,它就会瞬间消失。
在游戏的某个关卡里,平面的第一象限中有 只绿色的小猪,其中第 只小猪所在的坐标为 。
如果某只小鸟的飞行轨迹经过了 ,那么第 只小猪就会被消大无掉,同时小鸟将会沿着原先的轨迹继续 飞行;
如果一只小鸟的飞行轨迹没有经过 ,那么这只小鸟飞行的全过程就不会对第 只小猪产生任何影响。
例如,若两只小猪分别位于 和 ,Kiana 可以选择发射一只飞行轨迹为 的小鸟,这 样两只小猪就会被这只小鸟一起消井。
而这个游戏的目的,就是通过发射小鸟消大所有的小猪。
这款神奇游戏的每个关卡对 Kiana 来说都很难,所以 Kiana 还输入了一些神秘的指令,使得自己能更轻松地完成 这个这个游戏。
这些指令将在输入格式中详述。
假设这款游戏一共有 个关卡,现在 Kiana 想知道,对于每一个关卡,至少需要发射多少只小鸟才能消夹所有的 小猪。
由于她不会算,所以希望由你告诉她。
注意:本题除 NOIP 原数据外,还包含加强数据。
输入格式
第一行包含一个正整数 ,表示游戏的关卡总数。
下面依次输入这 个关卡的信息。
每个关卡第一行包含两个非负整数 ,分别表示该关卡中的小猪数量和 Kiana 输入的神秘指令类型。
接下来的 行中,第 行包含两个正实数 ,表示第 只小猪坐标为 ,数据保证同一个关卡中不存 在两只坐标完全相同的小猪。
如果 ,表示 Kiana 输入了一个没有任何作用的指令。
如果 ,则这个关卡将会满足:至多用 只小鸟即可消厈所有小猪。
如果 ,则这个关卡将会满足:一定存在一种最优解,其中有一只小鸟消灭了至少 只小猪。
保证 ,输入中的实数均保留到小数点后两位。
上文中,符号 和 分别表示对 向上取整和向下取整,例如 :
。
输出格式
对每个关卡依次输出一行答案。
输出的每一行包含一个正整数,表示相应的关卡中,消灭所有小猪最少需要的小鸟数量。
数据范围
输入样例:
输出样例:
解题思路
状压dp
最多只有 个小猪,据此考虑抛物线的数量,由 可知两点确定一条抛物线,所以最多需要 条抛物线,每两个点预处理出所有合法的抛物线,即 且为抛物线,两点横坐标不同,这样问题就转化为选出最少的抛物线覆盖所有的点,即重复覆盖问题,这里数量比较少,可用状压dp来做:
-
状态表示: 表示状态为 时还需要的最少抛物线数量
-
状态计算:,其中 表示由 和 两个点形成的抛物线所能覆盖点的状态
分析:状态 可能是由 转移过来的,其中 为状态 未能覆盖的点 -
时间复杂度:
代码
__EOF__

本文链接:https://www.cnblogs.com/zyyun/p/16005472.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效