博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[DP/变种背包] SOFTWARE
阅读量:5058 次
发布时间:2019-06-12

本文共 1577 字,大约阅读时间需要 5 分钟。

【问题描述】

    一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每个软件划分成m个模块,由公司里的技术人员分工完成,每个技术人员完成同一软件的不同模块的所用的天数是相同的,并且是已知的,但完成不同软件的一个模块的时间是不同的,每个技术人员在同一时刻只能做一个模块,一个模块只能由一个人独立完成而不能由多人协同完成。一个技术人员在整个开发期内完成一个模块以后可以接着做任一软件的任一模块。写一个程序,求出公司最早能在什么时候交付软件。

【输入格式】

    输入文件第一行包含两个由空格隔开的整数n和m,其中1≤n≤100,1≤m≤100。接下来的n行每行包含两个用空格隔开的整数d1和d2,d1表示该技术人员完成第一个软件中的一个模块所需的天数,d2表示该技术人员完成第二个软件中的一个模块所需的天数,其中1≤d1,d2≤100。

【输出格式】

    输出文件仅有一行包含一个整数d,表示公司最早能于d天后交付软件。

【输入样例】SOFTWARE.IN

    3  20

    1 1

    2 4

    1 6

【输出样例】SOFTWARE.OUT

    18

【样例说明】

最快的方案是第一个技术人员完成第二个软件的18个模块,用时18天,第三个技术人员完成第一个软件的18个模块,用时18天,其余的模块由第二个技术人员完成,用时12天,做完所有的模块需要18天。如果第一个技术人员完成第二个软件的17个模块,第三个技术人员完成第一个软件的17个模块,其余的模块由第二个技术人员完成,需要用时18天,做完所有模块仍然需要18天,所以少于18天不可能做完所有模块。

【我的AC程序】

#include 
#include
#include
#include
#include
#include
#include
using namespace std;int n,m,ans;int a[1000],b[1000],f[10005];//f[i]为完成i个A时最多能完成多少个B void fen(int l,int r){ memset(f,-1,sizeof(f));//此背包不能有多余的空间 ,因为多余了A的个数显然不行 f[0]=0; int mid=l+r>>1; for(int i=1;i<=n;i++)//枚举物品 for(int j=m;j>=0;j--)//背包容量(共完成j个A) for(int k=0;k<=min(mid/a[i],j);k++)//第i个人完成k个A if(f[j-k]>=0) f[j]=max(f[j],f[j-k]+(mid-k*a[i])/b[i]);//更新答案 if(l==r) { if(f[m]>=m) ans=l; else ans=l+1; return; } if(f[m]>=m) fen(l,mid); else fen(mid+1,r);}int main(){ freopen("software.in","r",stdin); freopen("software.out","w",stdout); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d%d",&a[i],&b[i]); } fen(1,20001); printf("%d",ans); return 0;}

 

转载于:https://www.cnblogs.com/Miniweasel/p/9886649.html

你可能感兴趣的文章
关于js sort排序方法
查看>>
JAVA面试常见问题之Redis篇
查看>>
javascript:二叉搜索树 实现
查看>>
网络爬虫Heritrix源码分析(一) 包介绍
查看>>
__int128的实现
查看>>
Problem - 1118B - Codeforces(Tanya and Candies)
查看>>
jdk1.8 api 下载
查看>>
svn 图标不显示
查看>>
getElement的几中属性介绍
查看>>
iOS 使用Quartz 2D画虚线 【转】
查看>>
平面最接近点对
查看>>
HTML列表,表格与媒体元素
查看>>
PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点?
查看>>
感谢青春
查看>>
Jquery Uploadify4.2 falsh 实现上传
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>
linux基础-命令
查看>>
java对象的深浅克隆
查看>>
Hadoop流程---从tpch到hive
查看>>
数据结构3——浅谈zkw线段树
查看>>