zoukankan      html  css  js  c++  java
  • 洛谷 P1800 software_NOI导刊2010提高(06)

    题目描述

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

    输入输出格式

    输入格式:

     

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

     

    输出格式:

     

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

     

    输入输出样例

    输入样例#1: 复制
    3 20
    1 1
    2 4
    1 6
    
    输出样例#1: 复制
    18

    说明

    【样例】

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

    思路:二分套dp。

    f[i][j]表示到第i个人为止,第一个模块已经完成了j块,此时第二个工作最多完成多少块。

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define MAXN 110
    using namespace std;
    int n,m;
    int l,r,mid;
    int f[MAXN][MAXN];
    int a[MAXN],b[MAXN];
    bool judge(){
        for(int i=0;i<=n;i++)
            for(int j=0;j<=m;j++)
                f[i][j]=-10000;
        f[0][0]=0;
        for(int i=1;i<=n;i++)
            for(int j=0;j<=m;j++)
                for(int k=0;k<=min(mid/a[i],j);k++)
                    f[i][j]=max(f[i][j],f[i-1][j-k]+((mid-a[i]*k)/b[i]));
        if(f[n][m]>=m)    return true;
        else return false;
    }
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
            scanf("%d%d",&a[i],&b[i]);
        l=0;r=10000;
        while(l<=r){
            mid=(l+r)/2;
            if(judge())    r=mid-1;
            else l=mid+1;;
        }
        cout<<l;
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    DotNET应用架构设计指南 安全 运行管理和通讯策略
    开放、主动、好学、谦虚
    粉丝经济
    选个大市场,组建最优秀的团队,拿到花不完的钱(转)
    一个人,可以看他的学识,他的气质,他的丰采,他的谈吐(转)
    Java基础—ClassLoader的理解(转)
    数据库置疑问题解决
    Android应用中使用百度地图API定位自己的位置(二)
    Hopcroft-Karp算法模版
    html表单提交的几种方法
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7801159.html
Copyright © 2011-2022 走看看