题解CF1133E K Balanced Teams

Posted kylin-xy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解CF1133E K Balanced Teams相关的知识,希望对你有一定的参考价值。

题目: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的主要内容,如果未能解决你的问题,请参考以下文章

CF1133EK Balanced Teams(动态规划,单调队列)

codeforces 1133E K Balanced Teams

CF #544 div3 E. K Balanced Teams

CF932E Team Work——第二类斯特林数

luogu CF932E Team Work |斯特林数

CF932E Team Work(第二类斯特林数)