洛谷 P1800 software_NOI导刊2010提高(06)(二分答案+DP检验)
来源:互联网 发布:matlab2016a破解版mac 编辑:程序博客网 时间:2024/05/21 04:22
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检验.这题一看就是二分嘛.然后检验不大好想.然后偷着看了看题解orz.一开始也想这样DP来着但是状态不好定义.f[i][j]表示前i个人做j个第一项目任务还能做的第二项目任务的数量.然后有f[i][j]=max(f[i][j],f[i-1][j-k]+(x-a[i]*k)/b[i]).*/#include<iostream>#include<cstdio>#include<cstring>#define MAXN 101using namespace std;int max1,n,m,a[MAXN],b[MAXN],ans,tot,f[MAXN][MAXN];int read1(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar(); return x*f;}bool check(int x){ memset(f,-127/3,sizeof f); f[0][0]=0; for(int i=1;i<=n;i++) for(int j=0;j<=m;j++) for(int k=0;k<=min(x/a[i],j);k++) f[i][j]=max(f[i][j],f[i-1][j-k]+(x-a[i]*k)/b[i]); return f[n][m]>=m;}void erfen(int l,int r){ int mid; while(l<=r) { mid=(l+r)>>1; if(check(mid)) ans=mid,r=mid-1; else l=mid+1; } printf("%d",ans);}int main(){ n=read1(),m=read1(); for(int i=1;i<=n;i++) a[i]=read1(),b[i]=read1(), max1+=a[i]+b[i]; erfen(1,max1*n); return 0;}
- 洛谷 P1800 software_NOI导刊2010提高(06)(二分答案+DP检验)
- [二分答案 DP检验 几何] BalkanOI 2017. Cruise
- UVALive 4625 Garlands(二分答案 + DP)
- UVALive 3608 Period(二分答案+DP)
- so就 (二分答案 dp 贪心)
- 道路覆盖 (二分答案+状压DP)
- NOIP2011提高组 聪明的质检员(二分答案)
- luogu1084【2012提高】疫情控制(二分答案+贪心+倍增)
- hdu3586(树形DP+二分答案)
- Topcoder SRM658,DP+二分答案,
- 二分答案加DP判断
- [dp][二分答案]最大正方形
- bzoj4985 评分(二分答案+dp)
- Codeforces#374(div2)- C. Journey(二分答案+dp)
- 校内互测 B. 王者荣耀 (二分答案+dp)
- 【NOIP 模拟题】[T2] 王者荣耀(二分答案+dp)
- P3802不死(二分答案+状压dp验证)
- BZOJ 1044: [HAOI2008]木棍分割(二分答案+DP)
- MyBatis 配置sql语句输出
- using ssh login linux installed in vmware
- 【codeforces 725C】C. Hidden Word【字符串构造】
- 一次完整的HTTP请求
- SDUTACM 数据结构实验之串二:字符串匹配
- 洛谷 P1800 software_NOI导刊2010提高(06)(二分答案+DP检验)
- cocoa pods的简单使用
- 轮播图的简单实现
- Android ListView 实现分批加载
- 云计算读书笔记0:云计算简介
- hdu 2136 Largest prime factor(素数打表)
- C# Dictionary用法总结
- C++ 虚函数表解析
- poj_3041 Asteroids(匈牙利算法+最小点覆盖)