K Balanced Teams CodeForces - 1133E (Dp)
题意:
给出 n 个数,选取其中若干个数分别组成至多 k 组,要求每组内最大值与最小值的差值不超过5,求最后被选上的总人数。
题解:
将a[1∼n] 从小到大排序,
f[i][j] 表示到第 i 个数为止,已经组成 j 组,最多可以包含多少个数。
那么,考虑第 i 个数选取与否,如果不选,那么
,
如果选,那么必然是第 i 个数所在组人数加上前面那些组人数,假设 p 表示距离 a[i]左侧最远的那个位置(满足
),
这里
是指p之前的那些组的人数
题目链接:
参考:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n, k;
const int maxn = 5000 + 10;
int a[maxn];
int f[maxn][maxn];
int main()
{
cin >> n >> k;
for(int i = 1; i <= n; i++)
cin >> a[i];
sort(a+1, a + n + 1);
int p = 1;
int ans = 1;
memset(f, 0, sizeof(f));
f[1][1] = 1;
for(int i = 2; i <= n; i++)
{
while(p < i && a[i] - a[p] > 5) // p~i为一组
p++;
for(int j = 1; j <= min(k, i); j++) //i可能小于k,也可能大于k(这时就应限制大小)
{
f[i][j] = max(f[i-1][j], (i - p + 1) + f[p-1][j-1]);
ans = max(ans, f[i][j]);
}
}
cout << ans << endl;
}
注:发现从数组从下标1开始输入比较稳妥,可以避免样例1发生p-1=-1的情况
K Balanced Teams CodeForces - 1133E (Dp)的更多相关文章
- 【CF1133E】K Balanced Teams(动态规划,单调队列)
[CF1133E]K Balanced Teams(动态规划,单调队列) 题面 CF 让你把一堆数选一些出来分成不超过\(K\)组,每一组里面的最大值和最小值之差不超过\(5\),求最多有多少个人元素 ...
- Codeforces 544E K Balanced Teams (DP)
题目: You are a coach at your local university. There are nn students under your supervision, the prog ...
- Codeforces Round #544 (Div. 3) E. K Balanced Teams (DP)
题意:有\(n\)个人,每个人的能力值是\(a_i\),现在你想将这些人分成\(k\)组(没必要全选),但是每组中最高水平和最低水平的人的能力差值必须\(\le 5\),问最多能选多少人. 题解:想了 ...
- Codeforces 1133E - K Balanced Teams - [DP]
题目链接:https://codeforces.com/contest/1133/problem/C 题意: 给出 $n$ 个数,选取其中若干个数分别组成 $k$ 组,要求每组内最大值与最小值的差值不 ...
- codeforces 1133E K Balanced Teams
题目链接:http://codeforces.com/contest/1133/problem/E 题目大意: 在n个人中找到k个队伍.每个队伍必须满足最大值减最小值不超过5.求满足条件k个队伍人数的 ...
- CF1133E K Balanced Teams(DP)
/* 排序之后每个点往前能选择的是一段区间, 所以我们实际上转移位置是确定的 然后f[i][j]表示到了i选了j段的最大贡献, 显然状态数是O(n^2)的, 转移是O(1)的 */ #include& ...
- E. K Balanced Teams
类比背包问题,为每个学生附加一个权重$pos[i]$,意思是选择该学生后,之后可以选择$p[i]~p[i]+5$的学生. 转换公式: $$d[i][j]=max(d[i+1][q],d[i+pos][ ...
- codeforces的dp专题
1.(467C)http://codeforces.com/problemset/problem/467/C 题意:有一个长为n的序列,选取k个长度为m的子序列(子序列中不能有位置重复),求所取的k个 ...
- Codeforces 119C DP
题意: 有n天,m门课和常数k; 每天上一门课,每门课程有两个属性,最少作业量a,最多作业量b,和难度c. 1<=a<=b<=1e16 c<=100 1<=n<=m ...
随机推荐
- java程序设计第二课
抽象基类和接口 能够使用keywordabstact来创建抽象类,该抽象类不能被实例化 也能够使用keywordabstact来描写叙述一个尚未被详细实现的方法,该方法不能包括方法体 一个抽象方法仅仅 ...
- SQL Server 2017 正式发布:同时支持 Windows 和 Linux(现在看下来,当年那德拉的“云优先,移动优先”是有远见的,而且是有一系列的措施和产品相配合的,只是需要一点时间而已。真是佩服!!)
微软在去年 3 月首次对外宣布了 Linux 版的 SQL Server,并于今年 7 月发布了首个公开 RC 版.前几日在美国奥兰多召开的微软 Ignite 2017 大会上,微软宣布 SQL Se ...
- WPF中用于嵌入其他进程窗口的自定义控件(AppContainer)
原文:WPF中用于嵌入其他进程窗口的自定义控件(AppContainer) 版权声明:本文为博主原创文章,转载请注明作者和出处 https://blog.csdn.net/ZZZWWWPPP11199 ...
- 【Java】【Flume】Flume-NG阅读源代码AvroSink
org.apache.flume.sink.AvroSink是用来通过网络来数据传输的.能够将event发送到RPCserver(比方AvroSource),使用AvroSink和AvroSource ...
- 构建自己的PHP框架(composer)
完整项目地址:https://github.com/Evai/Aier Composer 利用 PSR-0 和 PSR-4 以及 PHP5.3 的命名空间构造了一个繁荣的 PHP 生态系统.Compo ...
- wpf listbox 选中项 上移下移
原文:wpf listbox 选中项 上移下移 private void MoveUp_Click(object sender, RoutedEventArgs e) { ...
- 【Quartz】定时器初步实验(一)
原文:[Quartz]定时器初步实验(一) 以前就了解了Quartz这个定时框架,但是一直没有认真的去关注他,最近忽然看到已经更新到3.0.4支持异步操作了所以就写个简单的小例子看看好用不. ...
- DataGrid自定义复选框
<DataGridTemplateColumn Header="选择" Width="Auto" > <!--列头模板--> <D ...
- Bootstrap路径导航
@{ Layout = null;}<!DOCTYPE html><html><head> <meta name="viewport&q ...
- jquery hover()的使用
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...