码迷,mamicode.com
首页 > 其他好文 > 详细

题解CF1133E K Balanced Teams

时间:2019-10-18 15:36:35      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:一个   www   lan   最大和   思考   ack   题目   答案   blank   

题目:CF1133E K Balanced Teams

拿到手第一想法就是算一下每个人可以和他分一起的,然后贪心。很显然在1s内被自己hack。所以贪心不行优先考虑dp。看到n和k的范围明显是个O(n^2)的dp。

由于我们不考虑顺序,按常规把水平排个序。

我的最初想法:

设f[i][j]:前i个人分了j组的最大和。

1.h[i]-h[lst]<=5 我们可以把他分到j-1组也可以分到第j组

2.h[i]-h[lst]>5 只能把i分到第j组

但我们遇到一个问题,就是我们不清楚第j-1组的开头到底是哪个。所以我又重新思考了一下:

f[i][j]=Max(f[i-1][j],f[lst][j]+i-lst);

此处的lst是最早的可以和i分到一组的,这样可以保证答案最大。

然后由于a[i]是升序的,这次的lst直接从上次的往后移就行。

 

题解CF1133E K Balanced Teams

标签:一个   www   lan   最大和   思考   ack   题目   答案   blank   

原文地址:https://www.cnblogs.com/Kylin-xy/p/11698461.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!