F - Communication System
We have received an order from Pizoor Communications Inc. for a special communication system. The system consists of several devices. For each device, we are free to choose from several manufacturers. Same devices from two manufacturers differ in their maximum bandwidths and prices.
By overall bandwidth (B) we mean the minimum of the bandwidths of the chosen devices in the communication system and the total price (P) is the sum of the prices of all chosen devices. Our goal is to choose a manufacturer for each device to maximize B/P.
Input
The first line of the input file contains a single integer t (1 ≤ t ≤ 10), the number of test cases, followed by the input data for each test case. Each test case starts with a line containing a single integer n (1 ≤ n ≤ 100), the number of devices in the communication system, followed by n lines in the following format: the i-th line (1 ≤ i ≤ n) starts with mi (1 ≤ mi ≤ 100), the number of manufacturers for the i-th device, followed by mi pairs of positive integers in the same line, each indicating the bandwidth and the price of the device respectively, corresponding to a manufacturer.
Output
Your program should produce a single line for each test case containing a single number which is the maximum possible B/P for the test case. Round the numbers in the output to 3 digits after decimal point.
Sample Input
1 3
3 100 25 150 35 80 25
2 120 80 155 40
2 100 100 120 110
Sample Output
0.649
题目要求所选d的最小值除以总p最大;
一开始的想法是从第一个开始选然后慢慢选后面的,但是发现有bug,这种方法做不了;
这题因为n,t都比较小,所以可以用暴力,把所有的情况都选一边,就是从d最小开始选择,然后把所有情况的d/p算出来,选最大的就好了
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<cmath>
#include<string.h>
#include<algorithm>
#define sf scanf
#define pf printf
#define cl clear()
#define pb push_back
#define mm(a,b) memset((a),(b),sizeof(a))
#include<vector>
const double pi=acos(-1.0);
typedef __int64 ll;
typedef long double ld;
const ll mod=1e9+7;
struct qq
{
int num;
int a[105];
int b[105];
}q[105];
int dd[10005],d[10005];
double ans[10005];
using namespace std;
int main()
{
int re;
cin>>re;
while(re--)
{
mm(ans,0);
int ww=1;
int w=0;
mm(d,0);
mm(dd,0);
int n;
cin>>n;
double b=0,p=0;
for(int i=0;i<n;i++)
{
mm(q[i].a ,0);mm(q[i].b,0);
int m;
cin>>m;
q[i].num =m;
for(int j=0;j<m;j++)
{
sf("%d%d",&q[i].a[j],&q[i].b[j]);
dd[w++]=q[i].a[j];
}
}
sort(dd,dd+w);
d[0]=dd[0];
for(int i=1;i<w;i++)
{
if(dd[i]!=d[ww-1])
d[ww++]=dd[i];
}
int k;
for( k=0;k<ww;k++)
{
int pp=0,temp=0;
for(int i=0;i<n;i++)
{
int p=mod;
for(int j=0;j<q[i].num ;j++)
{
if(q[i].a[j]>=d[k])
if(q[i].b[j]<p)
p=q[i].b[j];
}
if(p==mod)
temp=1;
pp+=p;
}
if(temp)
break;
ans[k]=(double)d[k]/pp;
}
double max=ans[0];
for(int i=1;i<k;i++)
if(max<ans[i])
max=ans[i];
pf("%.3lf\n",max);
}
return 0;
}
F - Communication System的更多相关文章
- poj 1018 Communication System
点击打开链接 Communication System Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21007 Acc ...
- POJ1018 Communication System
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 26738 Accepted: 9546 Description We ...
- Communication System(dp)
Communication System Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25006 Accepted: 8925 ...
- Codeforces Gym 100286F Problem F. Fibonacci System 数位DP
Problem F. Fibonacci SystemTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudg ...
- poj 1018 Communication System 枚举 VS 贪心
Communication System Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21631 Accepted: ...
- POJ 1018 Communication System(贪心)
Description We have received an order from Pizoor Communications Inc. for a special communication sy ...
- POJ 1018 Communication System (动态规划)
We have received an order from Pizoor Communications Inc. for a special communication system. The sy ...
- POJ 1018 Communication System(树形DP)
Description We have received an order from Pizoor Communications Inc. for a special communication sy ...
- poj 1018 Communication System (枚举)
Communication System Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22380 Accepted: ...
随机推荐
- android 异常:ScrollView can host only one direct child
android 采用ScrollView布局时出现异常:ScrollView can host only one direct child. 主要是ScrollView内部只能有一个子元素,即不能并列 ...
- Vim命令相关
在shell中,记住一些常用的vim命令,会在操作时候事半功倍. 光标移动 h,j,k,l,h #表示往左,j表示往下,k表示往右,l表示往上 Ctrl f #上一页 Ctrl b #下一页 w, e ...
- ng-repeat不添加容器标签
如UL中的循环, 我们不期望添加额外的div之类的容器标签, 使用ng-repeat-start和ng-repeat-end可以实现 <li class="item item-icon ...
- flex学习, 尝试布局一个计算器
<!DOCTYPE html> <html> <head> <title>flex</title> </head> <st ...
- SCWS 中文分词_测试成功
地址: http://www.xunsearch.com/scws/index.php
- 部分Linux时区改为东八区的方法
直接上命令 CentOS: timedatectl set-timezone Asia/Shanghai timedatectl status date Alphine: apk add tzdata ...
- CSS实现屏幕显示与打印结果不一样的方法
文章作者:Tony Qu原创 一种方法是为屏幕显示和打印分别准备一个css文件,如下所示: 用于屏幕显示的css: <link rel="stylesheet" href=& ...
- 【ShoppingPeeker】-基于Webkit内核的爬虫蜘蛛引擎 ShoppingWebCrawler的姊妹篇-可视化任务Web管理
ShoppingPeeker 这个项目是蜘蛛项目的可视化任务站点. 项目github地址:ShoppingPeeker 开发语言:C# 开发工具:Visual Studio 2017 +.Net Co ...
- 使用 LaTeX 画图系列
可以使用TikZ,用TikZ绘制出来的图形效果非常好,原生支持所有LaTeX语法. 使用 LaTeX 画柱状图/条形图参考:Guide to draw charts (basic, pie, bar) ...
- 如何生成唯一的server Id,server_id为何不能重复?
我们都知道MySQL用server-id来唯一的标识某个数据库实例,并在链式或双主复制结构中用它来避免sql语句的无限循环.这篇文章分享下我对server-id的理解,然后比较和权衡生成唯一serve ...