POJ1018
来源:互联网 发布:linux清除所有arp缓存 编辑:程序博客网 时间:2024/06/13 04:01
贪心思想;
让求B/P的max
B是所确定的物品中的最小宽度;
P是说确定的物品的价格总和;
求出最小和最大的B;
枚举B,求在B为最小宽度的条件下P的最小值;
{ 贪心思想 :找出每个MI总最小的价格,这样的话P的和一定是最小的}
#include <iostream>
#include <stdio.h>#include <string.h>
#include <algorithm>
#define maxn 200
using namespace std;
struct node
{
int b,p;
};
node obj[maxn][maxn];
int mi[maxn];
int b1[maxn*maxn];
int main()
{
int t,n,m;
int i, j, k, l;
double temp,stemp;
double maxdp,minp;
scanf("%d",&t);
while(t--)
{
memset(b1,0,sizeof(b1));
memset(mi,0,sizeof(mi));
int count = 0;
scanf("%d",&n);
temp = stemp = maxdp = minp = 0;
for( i = 0; i< n; i++)
{
scanf("%d",&mi[i]);
for( j = 0; j < mi[i]; j++)
{
scanf("%d%d",&obj[i][j].b, &obj[i][j].p);
b1[count++] = obj[i][j].b;
}
}
sort(b1,b1+count);
for( l = 0; l < count; l++)
{
i = b1[l];
stemp = 0;
for( j = 0; j < n; j++)
{
minp = 10000000;
for( k = 0; k < mi[j]; k++)
{
if( obj[j][k].b >= i && obj[j][k].p < minp )
minp = obj[j][k].p;
}
stemp += minp;
//cout<<stemp<<endl;
}
temp=i*1.0/stemp;
if(temp>maxdp)
maxdp=temp;
}
printf("%.3lf\n",maxdp);
}
return 0;
}
0 0
- POJ1018
- poj1018
- poj1018
- poj1018
- poj1018
- poj1018
- poj1018
- poj1018
- poj1018
- poj1018
- POJ1018
- poj1018
- poj1018
- poj1018
- poj1018
- POJ1018
- POJ1018
- poj1018
- DP合集
- 软考 -> 网络中各种交换设备
- 剑指offer:栈的压力、弹出序列
- css 底部固定不起作用
- MySQL触发器和Windows计划任务结合使用达到定时触发的效果
- POJ1018
- Linux CentOS PhpMyAdmin安装
- [Wikioi 1220]数字三角形---两种不同的解法(复习)
- KMP字符串模式匹配详解
- 微软中国:对政府禁装Win8感到非常意外
- 时间工具类
- Windows 各种计时函数总结
- 黑马程序员_Java基础_线程基础,创建,同步(单例设计模式的同步),死锁
- 吐槽下CSDN编辑器