题意:

给出 n 个数,选取其中若干个数分别组成至多 k 组,要求每组内最大值与最小值的差值不超过5,求最后被选上的总人数。

题解:

将a[1∼n] 从小到大排序,

f[i][j] 表示到第 i 个数为止,已经组成 j 组,最多可以包含多少个数。

那么,考虑第 i 个数选取与否,如果不选,那么 ,

如果选,那么必然是第 i 个数所在组人数加上前面那些组人数,假设 p 表示距离 a[i]左侧最远的那个位置(满足 ),这里是指p之前的那些组的人数

题目链接:

https://cn.vjudge.net/problem/CodeForces-1133E

参考:

https://www.cnblogs.com/dilthey/p/10804527.html

#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)的更多相关文章

  1. 【CF1133E】K Balanced Teams(动态规划,单调队列)

    [CF1133E]K Balanced Teams(动态规划,单调队列) 题面 CF 让你把一堆数选一些出来分成不超过\(K\)组,每一组里面的最大值和最小值之差不超过\(5\),求最多有多少个人元素 ...

  2. Codeforces 544E K Balanced Teams (DP)

    题目: You are a coach at your local university. There are nn students under your supervision, the prog ...

  3. Codeforces Round #544 (Div. 3) E. K Balanced Teams (DP)

    题意:有\(n\)个人,每个人的能力值是\(a_i\),现在你想将这些人分成\(k\)组(没必要全选),但是每组中最高水平和最低水平的人的能力差值必须\(\le 5\),问最多能选多少人. 题解:想了 ...

  4. Codeforces 1133E - K Balanced Teams - [DP]

    题目链接:https://codeforces.com/contest/1133/problem/C 题意: 给出 $n$ 个数,选取其中若干个数分别组成 $k$ 组,要求每组内最大值与最小值的差值不 ...

  5. codeforces 1133E K Balanced Teams

    题目链接:http://codeforces.com/contest/1133/problem/E 题目大意: 在n个人中找到k个队伍.每个队伍必须满足最大值减最小值不超过5.求满足条件k个队伍人数的 ...

  6. CF1133E K Balanced Teams(DP)

    /* 排序之后每个点往前能选择的是一段区间, 所以我们实际上转移位置是确定的 然后f[i][j]表示到了i选了j段的最大贡献, 显然状态数是O(n^2)的, 转移是O(1)的 */ #include& ...

  7. E. K Balanced Teams

    类比背包问题,为每个学生附加一个权重$pos[i]$,意思是选择该学生后,之后可以选择$p[i]~p[i]+5$的学生. 转换公式: $$d[i][j]=max(d[i+1][q],d[i+pos][ ...

  8. codeforces的dp专题

    1.(467C)http://codeforces.com/problemset/problem/467/C 题意:有一个长为n的序列,选取k个长度为m的子序列(子序列中不能有位置重复),求所取的k个 ...

  9. Codeforces 119C DP

    题意: 有n天,m门课和常数k; 每天上一门课,每门课程有两个属性,最少作业量a,最多作业量b,和难度c. 1<=a<=b<=1e16 c<=100 1<=n<=m ...

随机推荐

  1. 微信小程序之购物车

    这里演示从商品列表中添加到购物车 下面先做商品列表页.如下图: 布局分析: 首先一个list的主盒子,接着是item盒子,这是必须的.然后把item分成左侧的图片部分,和右侧的说明部分(item盒子使 ...

  2. MySQL TIMESTAMP(时间戳)详细解释

    当你创建一个表假设表中有类型的字段TIMESTAMP,该字段默认情况下,语句生成: CREATE TABLE `test` ( `id` int(11) DEFAULT NULL, `ctime` t ...

  3. 在运行Hfile的MR如果任务client结束OOM

    在运行MR将HDFS转换成HFile什么时候.例如,会发生以下的异常: 14/07/09 18:02:59 INFO mapred.JobClient:  map 83% reduce 0% 14/0 ...

  4. wxWidgets开始编程

    开始学习wxWidgets.上一页写"安装wxWidgets两遇到的障碍"(缩写"前言"). 先推荐一下这两天找到的学习材料. 博客中有一个系列教程,貌似作者没 ...

  5. WPF元素绑定

    原文:WPF元素绑定 数据绑定简介:数据绑定是一种关系,该关系告诉WPF从源对象提取一些信息,并用这些信息设置目标对象的属性.目标属性是依赖项属性.源对象可以是任何内容,从另一个WPF元素乃至ADO. ...

  6. WPF Path和图形

    <Window x:Class="GeometryDemo.MainWindow" xmlns="http://schemas.microsoft.com/winf ...

  7. python3. 报“ImportError: No module named ‘MySQLdb'”

    需要安装PyMysql pip install PyMysql 然后在程序中引入 import pymysql pymysql.install_as_MySQLdb() app.config['SQL ...

  8. PHP的MIPS交叉编译(CC=mipsel-openwrt-linux-uclibc-gcc,LD=mipsel-openwrt-linux-uclibc-ld)

    物联网内存吃紧,跑JVM这种内存大户肯定吃不消.要跑还是跑C实现的服务,比如Nginx+PHP+SQLite.比如一些家用无线路由器,系统是Linux发行版OpenWrt,内存只有64MB到128MB ...

  9. 《C标准库》阅读笔记

    <assert.h>的断言函数适合于用来调试,实际产品中难以使用. #define NDEBUG 可禁用断言. #undef NDEBUG 可打开断言. 我自己写的一个例子: #inclu ...

  10. C# 泛型 无法将类型xx隐式转换为“T”

    原文:C# 泛型 无法将类型xx隐式转换为“T” 直接奖泛型转为T是不能转换的 要先转Object 例: public static T GetValue<T>(string inValu ...