codeforces 1133E K Balanced Teams
题目链接:http://codeforces.com/contest/1133/problem/E
题目大意:
在n个人中找到k个队伍。每个队伍必须满足最大值减最小值不超过5。求满足条件k个队伍人数的总和的最大值。
这个题写DP很多的人应该可以很快写出来吧,毕竟不是很难。
思路:
反正最多n^2种状态。用数组存就好了。
先排序。
对于每个点,dp[a][b]。表示a到n区间里分b个队伍的答案。
如果a是答案dp[a][b]所需要的,那么我们从a开始到a+i暴力一下(此时,x[a+i]-x[a]>5。x是排完序后的数组),dp[a][b]=dp[i][b-1]+i-a。(因为a已经组了队,所以b-1)
如果答案不需要a,dp[a][b]=dp[a+1][b]
真正的答案当然是两者的最大值。
所以dp[a][b]=max(dp[i][b-1]+i-a,dp[a+1][b])
找到状态转移就很容易写了。
#include <bits/stdc++.h>
using namespace std; //#define int long long
#define IOS ios::sync_with_stdio(false);
#define endl "\n"
#define MAX 5005
#define mod 1000000007 int x[MAX];
int n,m;
int dp[MAX][MAX]; int DP(int a,int b){
if(b<=||a>n){
return ;
}
if(dp[a][b]){
return dp[a][b];
}
int i=a;
for(;i<=n;i++){
if(x[i]-x[a]>){
break;
}
} dp[a][b]=max(DP(i,b-)+i-a,DP(a+,b)); return dp[a][b];
} signed main()
{
IOS; cin>>n>>m; for(int i=;i<=n;i++){
cin>>x[i];
} sort(x+,x++n); cout<<DP(,m);
return ;
}
codeforces 1133E K Balanced Teams的更多相关文章
- Codeforces 1133E - K Balanced Teams - [DP]
题目链接:https://codeforces.com/contest/1133/problem/C 题意: 给出 $n$ 个数,选取其中若干个数分别组成 $k$ 组,要求每组内最大值与最小值的差值不 ...
- Codeforces 544E K Balanced Teams (DP)
题目: You are a coach at your local university. There are nn students under your supervision, the prog ...
- 【CF1133E】K Balanced Teams(动态规划,单调队列)
[CF1133E]K Balanced Teams(动态规划,单调队列) 题面 CF 让你把一堆数选一些出来分成不超过\(K\)组,每一组里面的最大值和最小值之差不超过\(5\),求最多有多少个人元素 ...
- K Balanced Teams CodeForces - 1133E (Dp)
题意: 给出 n 个数,选取其中若干个数分别组成至多 k 组,要求每组内最大值与最小值的差值不超过5,求最后被选上的总人数. 题解: 将a[1∼n] 从小到大排序, f[i][j] 表示到第 i 个数 ...
- Codeforces Round #544 (Div. 3) E. K Balanced Teams (DP)
题意:有\(n\)个人,每个人的能力值是\(a_i\),现在你想将这些人分成\(k\)组(没必要全选),但是每组中最高水平和最低水平的人的能力差值必须\(\le 5\),问最多能选多少人. 题解:想了 ...
- 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 552 E. Two Teams
E. Two Teams time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- Codeforces gym102152 K.Subarrays OR
传送:http://codeforces.com/gym/102152/problem/K 题意:给定$n(n\le10^5)$个数$a_i(a_i\le10^9)$,对于任一个子数组中的数进行或操作 ...
随机推荐
- 看到了一个pipeline例子,
pipeline { agent any options { timestamps() } parameters { string(name: 'GIT_BRANCH', defaultValue: ...
- h5py
解决办法: sudo apt-get install libhdf5-dev sudo apt-get install python-h5py
- datagrid 完整dom结构
<!-- datagrid的最外层容器,可以使用$(target).datagrid('getPanel')或者$.data(target,'datagrid').panel得到这个DOM对象, ...
- List集合和iterator并发异常处理
一:List接口: 子类:ArrayList LinkedList 特点:Unlike sets, lists typically allow duplicate elements.不像set集合 ...
- c实现 简单的文件管理 不含交互
实现如下功能: 1.读取指定目录下的所有子目录和文件信息(比如:指定目录为C:/temp则把此目录 下的所有子目录下的文件信息读出来)2.在C盘创建一个以个人姓名命名的目录(比如:张三)3.在目录下创 ...
- Map的复制
Map的复制不可以直接使用=赋值 Map<String,Object> map1 = new HashMap<String,Object>(); Map<String,O ...
- 电商 APP 下单页(俗称车2) 业务流程概要设计
购物车是电商APP的一个关键功能点,一般购物车包含 3-4 个页面,分别是: 1.购物车的商品列表页 2.商品下单页 3.订单付款页面 4.订单付款成功页面 由于现有购物车逻辑相对混乱,这里重新整理一 ...
- 检测ip和地区
获取当前位置所在省份城市和所用网络IP <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...
- TI DSP 6657 SRIO 简介
目录 TI DSP 6657 SRIO 简介 SRIO 协议介绍 RapidIO 基础 TI DSP 6657 SRIO 简介 SRIO 协议介绍 TI 的 KeyStone 系列设备中实现了 Rap ...
- 7款易上手C语言编程软件推荐
C语言是一门历史很长的编程语言,其编译器和开发工具也多种多样,其开发工具包括编译器,现举几个开发工具供大家选择,当然也要根据自己的操作系统来选择适合自己的开发工具. 好多刚开始接触c语言的朋友都想知道 ...