Round544div3E(1133E)
一、题目链接
https://codeforces.com/problemset/problem/1133/E
二、思路
显然要使用dp,因为中间有部分人不会选取。
令$dp[i][j]$表示在前$i$个人里面选择j组所能得到的最大人数。接下来就是0-1背包思想了。
对于第$i$个人,如果不选,那么$dp[i][j]=max(dp[i][j],dp[i-1][j])$;
如果选,那么$dp[i][j]=max(dp[i][j],dp[k][j-1]+i-k),0 \le k < i$。
这转移方程的时间复杂度是$O(N^3)$,显然会超时。
注意到,如果$a[i]==a[i-1]$,如果选择了$a[i-1]$,那么$a[i]$一定会选择。否则$a[i]$一定不会被选择。也就是说,如果两个人的数值相同,要么这两个人同时被选,要么同时都不被选。那么,可以对整个$a$数组去重,并记录每个数值代表的人数。令$a'$为去重后的数组,对于去重后的数组$a'$,上述式子$k$的选取不超过$5$,然后,把转移的代价由$i-k$改为$\sum\limits_{x=k+1}^{i}cnt[a'[x]]$即可。
三、代码
#include<bits/stdc++.h> using namespace std; ; int n, k; int a[N]; int dp[N][N]; unordered_map<int, int> cnt; int main() { cin >> n >> k; ; i < n; ++i)scanf("%d", a + i), cnt[a[i]]++; sort(a, a + n); int m = unique(a, a + n) - a; ; i < m; ++i) { ; j <= k; ++j) { ; ; x--) { )break; cc += cnt[a[x]]; )dp[i][j] = max(dp[i][j], dp[i - ][j]); )dp[i][j] = max(dp[i][j], dp[x - ][j - ] + cc); )dp[i][j] = max(dp[i][j], cc); } } } cout << dp[m - ][k] << endl; ; } /* 6 1 2 7 12 13 14 12 11 4 2 7 13 12 15 17 23 24 25 31 36 7 2 2 4 10 11 17 18 19 7 1 1 1 1 6 6 6 7 11 2 1 2 2 7 9 15 16 23 24 23 25 **/
Round544div3E(1133E)的更多相关文章
- codeforces 1133E K Balanced Teams
题目链接:http://codeforces.com/contest/1133/problem/E 题目大意: 在n个人中找到k个队伍.每个队伍必须满足最大值减最小值不超过5.求满足条件k个队伍人数的 ...
- K Balanced Teams CodeForces - 1133E (Dp)
题意: 给出 n 个数,选取其中若干个数分别组成至多 k 组,要求每组内最大值与最小值的差值不超过5,求最后被选上的总人数. 题解: 将a[1∼n] 从小到大排序, f[i][j] 表示到第 i 个数 ...
- Codeforces 1133E - K Balanced Teams - [DP]
题目链接:https://codeforces.com/contest/1133/problem/C 题意: 给出 $n$ 个数,选取其中若干个数分别组成 $k$ 组,要求每组内最大值与最小值的差值不 ...
随机推荐
- day44 数据库学习 索引 引用自egon 老师博客
MySQL索引管理 总结 #索引是存在硬盘中的, #索引的功能, 1.可以加速查询 2.但是他会降低写入和删除的速度 所以不能乱加索引 总结二 1 最左前缀匹配原则 2设置的索引,它的字段中的内容占空 ...
- OSGI基础知识整理
一. 简介: OSGi(Open Service Gateway Initiative)技术是面向Java的动态模型系统. OSGi的主要职责就是为了让开发者能够创建动态化.模 ...
- redmine和jenkins的ldap登录设置
工具: softeera LDAP browser 流程: Authentication modes » test Name * Host * Port * LDAPS Account Passwo ...
- bind智能DNS + bindUI管理系统
bind UI 管理系统 https://github.com/cucker0/BindUI # bind安装 cd /usr/local/src wget http://ftp.isc.org/is ...
- ELK-head
Head从elastic5开始只是支持单独服务器,不能够在通过 elasticsearch/bin/plugin -install mobz/elasticsearch-head 这样简单的方式安装插 ...
- 学习笔记: jstack与线程状态
jstatck可以打印JVM内部所有线程 1.查看有哪些java进程 2.查看所有线程的信息 重定向到5579.txt文件中 jstack 5579 > 5579.txt 3.线程的状态 New ...
- xml.sax 笔记
from xml.sax import saxutils html_str = """<!DOCTYPE html> <html> <hea ...
- 由于未能创建Visual C# 2015编译器,因此未能打开项目xxx。请重新安装Visual Studio。
解决方案1: 清除如下文件夹里的内容. %AppData%\Local\microsoft\VisualStudio\14.0\ComponentModelCache or C:\Users\DEL ...
- [转] openwrt关闭调试串口
转自: http://wiki.wrtnode.com/index.php?title=Release_UART/zh-cn 由于mt7620n只有一个UART lite接口,在原生的OpenWrt中 ...
- 阅读<Video Timing Controller>笔记
阅读<Video Timing Controller>笔记 1.Video Timing Controller Block Diagram 2.Example Video Timing ...