P2831 愤怒的小鸟 题解

本文是关于P2831 愤怒的小鸟问题的题解,探讨如何使用最少的次数消灭坐标系第一象限内的绿猪。通过算法一的暴力搜索策略,针对70%的数据可得70pts,而算法二采用状态压缩dp方法,解决了搜索过程中的重复状态问题,达到100pts满分。文章分析了时间复杂度并提出需要注意的精度问题。
摘要由CSDN通过智能技术生成

博客园同步

原题链接

简要题意:

平面直角坐标系的第一象限有若干绿猪,小鸟要通过若干条函数解析线来消灭它们。每个小鸟可以把所有 y = a x 2 + b x ( a < 0 ) y=ax^2 + bx (a<0) y=ax2+bx(a<0) 上的 ( x , y ) (x,y) (x,y) 的所有绿猪消灭,当然没有绿猪就是白走。问最少多少次后可以消灭所有的绿猪。 T T T 组数据。

前记

实际上,之前写过一篇 骗分导论,里面有点口出狂言,既然自己说了能 60 p t s 60pts 60pts 那还不来填坑?

算法一

对于 70 % 70 \% 70% 的数据, n ≤ 12 n \leq 12 n12.

实际上,直接爆搜即可。

怎么搜?对于每个搜索状态,你可以用一个 vector \text{vector} vector 来记录当前 剩下绿猪的坐标,并记录当前步数。

由于 vector \text{vector} vector 可以方便的删除元素,我们枚举当前 vector \text{vector} vector 的两个坐标并计算出 a , b a,b a,b 的值,然后判断 a < 0 a<0 a<0,合法则将所有 y = a x 2 + b x y=ax^2+bx y=ax2+bx 上的绿猪删除,进入下一层。

这样的话,如果你没有开 long double \text{long double} long double,可以得到 55 p t s 55pts 55pts.

开了之后就是 70 p t s 70pts 70pts. 脸黑啊

时间复杂度: O ( 70pts ) O(\text{70pts}) O(70pts).

期望得分: 60 p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值