[USACO] Barn Repair

这道题自己一直找不到贪婪准则,于是看了前面的TEXT,得到了提示,终于写出来了。。。

对于题目中的例子我们可以这么想,如果M=1,那么最少的stall数量为43-3+1=41,如果我们增加一根木板使M=2,这时该如何处理?

其实这就相当于把一个木板找个位置砍掉一段,在哪个位置呢?

连续的空的stall最长的两个端点,这样就使得得到的两个划分既覆盖了所有有牛的stall,有排除了最多的空的stall。

这就是贪婪的准则,按照此准则求解一定是局部最优的,当M个木板用完时,得到的结果即为全局最优解。。。

本题例子比较迷惑,我想当然的以为所有的输入是排好序的,结果贡献了一次WA。。。

由于昨天刚被快排折磨过,今天写的异常顺利,看来练练还是有效果的:)

 



分析的解法一想法跟我的差不多(怎么总是差不多?),不过它计算的是没有覆盖木板的空的stall的数量,然后用S减去这个值。。。

分析的解法二只有代码,乱遭儿的看不懂,有大牛看懂了请在底下留个言,共同学习。。。


这道题仔细一想还真就不难,可是怎么就找不到贪婪准则呢?面壁思过去!@_@

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值