poj 1018 Communication System_贪心
2013-11-26 18:47
441 查看
题意:给你n个厂,每个厂有m个产品,产品有B(带宽),P(价格),现在要你求最大的 B/P
明显是枚举,当P大于一定值,B/P为零,可以用这个剪枝
明显是枚举,当P大于一定值,B/P为零,可以用这个剪枝
#include <iostream> #include<cstring> #include<cstdio> using namespace std; #define N 110 #define INF 0xffffff int devb ,devp ; int b[N*100],tb; int main(int argc, char** argv) { int n,mi ,i,j,t; int blen,minprice,sum,minb,maxb,curb; double dmax,tvalue; scanf("%d",&t); while(t--){ scanf("%d",&n); blen=0; for(i=0;i<n;i++){ scanf("%d",&mi[i]); for(j=0;j<mi[i];j++){ scanf("%d%d",&devb[i][j],&devp[i][j]); b[blen++]=devb[i][j]; if(minb>=devb[i][j]) minb=devb[i][j]; if(maxb<=devb[i][j]) maxb=devb[i][j]; } } dmax=0; for(tb=minb;tb<=maxb;tb++){ sum=0; curb=INF; for(i=0;i<n;i++){ minprice=INF; for(j=0;j<mi[i];j++){ if(devb[i][j]>=tb&&devp[i][j]<minprice){ minprice=devp[i][j]; if(curb>devb[i][j]) curb=devb[i][j]; } } if(minprice==INF) break; sum+=minprice; } if(i==n){ tvalue=(double)curb/sum; if(tvalue>dmax) dmax=tvalue; tb=curb+1; }else break; } printf("%.3f\n",dmax); } return 0; }
相关文章推荐
- POJ 1018 枚举+贪心+剪枝
- poj 1018 Communication System (dp | 贪心)
- POJ 1018 Communication System 贪心+枚举
- 【贪心】【POJ-1018】Communication System
- poj 1018 Communication System 贪心
- poj 1018 Communication System 枚举 VS 贪心
- 【贪心】Communication System POJ 1018
- POJ 1018 Communication System (枚举+贪心)
- poj 1018 Communication System 枚举 VS 贪心
- POJ 1018 Communication System(搜索/贪心/动归)
- poj1018 枚举加贪心
- POJ - 1018 Communication System(贪心)
- poj 1018 Communication System 【动态规划】||【贪心】
- POJ1018 Communication System(DP||贪心)
- poj 1018 Communication System(枚举+贪心)
- 【POJ 1018】Communication System(dp|贪心)
- POJ 1018 通信设备购买方案的选择 贪心
- POJ 1018 Communication System(贪心+优化)
- POJ 1018 通信设备购买方案的选择 贪心
- POJ 1018 贪心思想