[Codeforces 626F]Group Projects
题目大意:
给定\(n\)个数\(a[1]\sim a[n]\),让你把它分为若干个集合,使每个集合内最大值与最小值的差的总和不超过\(K\)。问总方案数。
解题思路:
一道很神的dp题。
首先将数进行排序,然后将这些数扔数轴上,则集合价值相当于在数轴上覆盖这些点所用的最短线段的长度(当然长度可以为0)。
考虑dp,设\(f[i][j][k]\)表示考虑了前\(i\)个点,目前还未确定右端点的集合还有\(j\)条,目前的总价值为\(k\),则
不论如何,新加进\(a[i+1]-a[i]\)这条线段,对\(j\)个集合均有影响,因此会增加价值为\((a[i+1]-a[i])\times j\),设其为\(t\)。
转移分四种情况:
1. 该点单独成一个集合,则\(j\)不变,仅有1种情况,\(f[i+1][j][k+t]+=f[i][j][k]\);
2. 该点作为某个集合的中间元素,则\(j\)也不变,对于\(j\)个集合都有可能,因此\(f[i+1][j][k+t]+=f[i][j][k]\times j\);
3. 该点作为一个集合的起点,则集合数多了1,仅有1种情况,\(f[i+1][j+1][k+t]+=f[i][j][k]\);
4. 该点作为一个集合的终点,则集合数少了1,对于\(j\)个集合都有可能,因此\(f[i+1][j−1][k+t]+=f[i][j][k]\times j\)。
答案为\(\sum\limits_{i=0}^K f[n][0][i]\)。
时空复杂度均为\(O(n^2K)\),空间复杂度可以用滚动数组优化到\(O(nK)\)。
C++ Code:
#include<bits/stdc++.h>
using namespace std;
const int md=1e9+7;
int n,K,cur,a[201],dp[2][201][1001];
int main(){
ios::sync_with_stdio(0),cin.tie(0);
cin>>n>>K;
for(int i=1;i<=n;++i)cin>>a[i];
sort(a+1,a+n+1);
dp[1][1][0]=dp[1][0][0]=cur=1;
for(int i=1;i<n;++i){
const int otr=cur;
memset(dp[cur^=1],0,sizeof dp[0]);
for(int j=0;j<=i;++j){
const int t=j*(a[i+1]-a[i]);
for(int k=0;k+t<=K;++k){
dp[cur][j][k+t]=(dp[cur][j][k+t]+dp[otr][j][k]*(j+1ll)%md)%md;
if(j<n)dp[cur][j+1][k+t]=(dp[cur][j+1][k+t]+dp[otr][j][k])%md;
if(j)dp[cur][j-1][k+t]=(dp[cur][j-1][k+t]+1ll*dp[otr][j][k]*j%md)%md;
}
}
}
int ans=0;
for(int i=0;i<=K;++i)
ans=(1ll*dp[cur][0][i]+ans)%md;
cout<<ans<<endl;
return 0;
}
[Codeforces 626F]Group Projects的更多相关文章
- Codeforces 626F Group Projects(滚动数组+差分dp)
F. Group Projects time limit per test:2 seconds memory limit per test:256 megabytes input:standard i ...
- Codeforces 626F Group Projects (DP)
题目链接 8VC Venture Cup 2016 - Elimination Round 题意 把$n$个物品分成若干组,每个组的代价为组内价值的极差,求所有组的代价之和不超过$k$的方案数. ...
- 【CodeForces】626 F. Group Projects 动态规划
[题目]F. Group Projects [题意]给定k和n个数字ai,要求分成若干集合使得每个集合内部极差的总和不超过k的方案数.n<=200,m<=1000,1<=ai< ...
- Codeforces 8VC Venture Cup 2016 - Elimination Round F. Group Projects 差分DP*****
F. Group Projects There are n students in a class working on group projects. The students will div ...
- 8VC Venture Cup 2016 - Elimination Round F. Group Projects dp
F. Group Projects 题目连接: http://www.codeforces.com/contest/626/problem/F Description There are n stud ...
- [Codeforces626F] Group Projects (DP)
Group Projects Description There are n students in a class working on group projects. The students w ...
- 8VC Venture Cup 2016 - Elimination Round F - Group Projects dp好题
F - Group Projects 题目大意:给你n个物品, 每个物品有个权值ai, 把它们分成若干组, 总消耗为每组里的最大值减最小值之和. 问你一共有多少种分组方法. 思路:感觉刚看到的时候的想 ...
- [CF626F]Group Projects
[CF626F]Group Projects 题目大意: 有一个长度为\(n(n\le200)\)的数列\(\{A_i\}\),将其划分成若干个子集,每个子集贡献为子集\(\max-\min\).求子 ...
- codeforces A. Group of Students 解题报告
题目链接:http://codeforces.com/problemset/problem/357/A 题目意思:将一堆人分成两组:beginners 和 intermediate coders .每 ...
随机推荐
- flex笔记 - 基础
flex笔记 - 基础 文章中的所有图示代码都放在了github上: 阮一峰flex博客跟学代码 传统的布局解决方案,基于盒模型, 依赖 display, position, float属性来进行布局 ...
- 30 包含min函数的栈(举例让抽象问题具体化)
题目描述: 定义栈的数据结构(push/pop),请在该类型中实现一个能够得到栈中所含最小元素的min函数(三者的时间复杂度都应为O(1)). 测试用例: 1)新压入栈的数字比之前的最小值大/小 2) ...
- MAVN(自动创建maven项目骨架) 项目架构的生成
1.Maven的项目架构生成 A.打开DOS命令窗口选定文件的更跟目录 B:输入命令 mvn archetype:generate C:根据提示输入对应的标识 如图: 最后提示 SUCCESS 即为 ...
- A - Jungle Roads
A - Jungle Roads 思路:并查集的板子,重点是字符的转换,不能忘了加上1. #include<cmath> #include<cstdio> #include&l ...
- Android面试过程描写叙述
1.之前所写项目的介绍 2.android一些常见问题的问答 3.关于android平时非常少用到但实则非常重要的问题描写叙述 技术分析 1自我感觉面试中比較好的方面: 1.熟悉掌握之前所写项目 2. ...
- 虚拟ONVIF 摄像机
測试视频监控系统须要大量的Camera.搭建起来也很麻烦,在vdceye中增加虚拟onvif 摄像 机支持,把一个Camera变成上百个. watermark/2/text/aHR0cDovL2Jsb ...
- Mediator Design Pattern 中介者模式
就是设计一个Mediator类,能够处理其它类的关系. Mediator类: 1 拥有其它全部类的实例对象 2 设置一个接口供其它类使用,其它类也拥有一个Mediator类成员,仅仅需调用这个Medi ...
- Android——隐藏输入法的小技巧
今天偶然在百度地图提供的DEMO里看到这样一段代码.认为确实是个小技巧,就写下来分享一下. 针对的问题: 我们在开发android界面的时候,常常使用EditText控件.然后每次进入这个页面的时候, ...
- [iOS翻译]《iOS7 by Tutorials》在Xcode 5里使用单元測试(上)
简单介绍: 单元測试是软件开发的一个重要方面.毕竟,单元測试能够帮你找到bug和崩溃原因,而程序崩溃是Apple在审查时拒绝app上架的首要原因. 单元測试不是万能的,但Apple把它作为开发工具包的 ...
- Java-2-学习历程2:基础知识1,2,3文档、完整版视频资源、电子书籍下载
Java学习历程:基础知识1,2,3文档.完整版视频资源.电子书籍 1.基础知识1,2.3可到下面地址下载: http://download.csdn.net/detail/iot_li/886 ...