2010 ACM-ICPC Multi-University Training Contest(1) ——A Task Process
2010-08-01 15:01
471 查看
/* 题目大意: 有x个A任务,y个B任务,n个人,第i个人完成一个A任务的时间为a[i], 完成一个B任务的时间为b[i],求:完成所有任务的最小时间? 注意: (1)两个人可以同时完成不同的任务 (2)也可以同时完成相同任务的不同子任务 主要算法: DP + Binary Search 过程: 首先用二分法定位时间 T 选定时间后使用DP计算时间是不是满足要求 满足要求后继续二分直到时间最少且满足要求。 dp[i][j] 表示前i个人完成j数量的A任务以后还能完成B任务的数量 dp[i][j+k] = max( dp[i][j+k] , dp[i-1][j]+min( T-k*a[i]/b[i] , y-dp[i-1][j] ) ); */ #include <iostream> #include <cstring> #include <cstdio> #include <string> using namespace std; #define maxn 52 #define maxm 202 int dp[maxn][maxm]; int a[maxn],b[maxn]; int x,y,n; int dpf(int T) { int i,j,k; for(i=0;i<maxn;i++) { for(j=0;j<maxm;j++) { dp[i][j] = -1; } } dp[0][0]=0; for(i=1;i<=n;i++) { for(j=0;j<=x;j++) { if(dp[i-1][j]!=-1) { for(k=0;k<=min(T/a[i],x-j);k++) { dp[i][j+k]=max(dp[i][j+k],dp[i-1][j]+min((T-k*a[i])/b[i],y-dp[i-1][j])); } } } } return dp [x]>=y; } int main() { int t; scanf("%d",&t); int count = 0,i; while(t--) { scanf("%d%d%d",&n,&x,&y); for(i=1;i<=n;i++) { scanf("%d%d",&a[i],&b[i]); } int l=0;int r=1000*200*2; int mid = (l+r)>>1; int ans; while(l<=r) { if(dpf(mid)) { r=mid-1; ans = mid; } else l=mid+1; mid = (l+r)>>1; } printf("Case %d: %d/n",++count,ans); } return 0; }
相关文章推荐
- 2010 ACM-ICPC Multi-University Training Contest(11)——Host by BUPT
- 2010 ACM-ICPC Multi-University Training Contest(2)——Host by BUPT 解题报告[部分]
- hdu 3461 Code Lock(并查集)2010 ACM-ICPC Multi-University Training Contest(3)
- hdu 3572 Task Schedule(最大流)2010 ACM-ICPC Multi-University Training Contest(13)——Host by UESTC
- hdu 2010 ACM-ICPC Multi-University Training Contest(1)——Host by FZU(杯具了)
- 2010 ACM-ICPC Multi-University Training Contest(5)HDU3485Count 101题解动态规划DP
- 2010 ACM-ICPC Multi-University Training Contest(12)——Host by WHU 部分题目解题报告
- HDU 3605 Escape 最大流or二分图多重匹配 2010 ACM-ICPC Multi-University Training Contest(17)——Host by ZSTU
- Print Article[HDU 3507,2010 ACM-ICPC Multi-University Training Contest]
- 2010 ACM-ICPC Multi-University Training Contest(2)——Host by BUPT
- HDU 3602 2012(2010 ACM-ICPC Multi-University Training Contest(16)——Host by NUDT)
- hdu 3496 Watch The Movie //2010 ACM-ICPC Multi-University Training Contest(6)——Host by BIT
- 2010 ACM-ICPC Multi-University Training Contest(14)——Host by BJTU
- Computer Assembling //2010 ACM-ICPC Multi-University Training Contest(10)——Host by HEU
- HDU3523 Image copy detection 最小权匹配KM 2010 ACM-ICPC Multi-University Training Contest(9)——Host by HNU
- hdu3555 - Bomb(2010 ACM-ICPC Multi-University Training Contest(12))数位dp
- hdu 3555 Bomb 2010 ACM-ICPC Multi-University Training Contest 12
- hdu 3635 Dragon Balls(加权并查集)2010 ACM-ICPC Multi-University Training Contest(19)
- SPY //2010 ACM-ICPC Multi-University Training Contest(10)——Host by HEU
- Tree //2010 ACM-ICPC Multi-University Training Contest(10)——Host by HEU