pku 3017 Cut the Sequence(贪心不是可以滥用的。。)

按着题目分类往下做,做到这一题的时候,上面说是要加数据结构的优化。

不过我随便想想,发现个贪心策略,可以把复杂度降很低。

我当时想的贪心策略是:假设num[i]...num[i]是一段,如果num[i]+...num[j]+num[j+1]<=M,则把num[j+1]直接加到前面一段上去。其他的部分按照常规DP。

我就按照这个思路写,提交后无限WA。在网上找了个正确的程序来手工对拍,跑了n组随机数据答案都是一样的,但只要一提交就是WA。后来,我不仅打印答案,还把中间数据全都给打印了出来,才终于找到了问题。之前那个贪心是错误的,还要加上一个限制条件。

假设num[i]...num[i]是一段,并且num[i]+...num[j]+num[j+1]<=M

如果 max(num[i]...num[j])>=num[j+1] ,则把num[j+1]直接加到前面一段上去。

否则重新搜索该段的起始节点,可以直接从i开始往前搜索。

 

没有加什么数据结构优化,跑390ms,勉强凑合。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值