这道题自己一直找不到贪婪准则,于是看了前面的TEXT,得到了提示,终于写出来了。。。
对于题目中的例子我们可以这么想,如果M=1,那么最少的stall数量为43-3+1=41,如果我们增加一根木板使M=2,这时该如何处理?
其实这就相当于把一个木板找个位置砍掉一段,在哪个位置呢?
连续的空的stall最长的两个端点,这样就使得得到的两个划分既覆盖了所有有牛的stall,有排除了最多的空的stall。
这就是贪婪的准则,按照此准则求解一定是局部最优的,当M个木板用完时,得到的结果即为全局最优解。。。
本题例子比较迷惑,我想当然的以为所有的输入是排好序的,结果贡献了一次WA。。。
由于昨天刚被快排折磨过,今天写的异常顺利,看来练练还是有效果的:)
分析的解法一想法跟我的差不多(怎么总是差不多?),不过它计算的是没有覆盖木板的空的stall的数量,然后用S减去这个值。。。
分析的解法二只有代码,乱遭儿的看不懂,有大牛看懂了请在底下留个言,共同学习。。。
这道题仔细一想还真就不难,可是怎么就找不到贪婪准则呢?面壁思过去!@_@