`

poj 1018

 
阅读更多

题目大意:

一套通讯系统由一些设备组成,每种设备由不同的供应商供应,每个供应商供应的同种设备有各自的带宽(bandwidth)和价格(prices)。通讯系统的带宽(B)指的是组成该系统的所有设备的带宽的最小值,通讯系统的价格(P)指的是组成该系统的所有设备的价格之和。求最大的 (B / P)。

思路分析:

先枚举出所有供应商所供应的所有设备的最小带宽和最大的带宽,从最小带宽开始枚举,用贪心法选出带宽大于等于最小带宽的最低价格,然后再比较更新最大的(B / P)的值,直到到达最大带宽。

代码如下:

#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
const int Max=101;

struct node 
{
	double b;
	double p;
};

node a[Max][Max];
double b[Max*Max];
int m[Max];
int bsize;

int cmp(const void *a,const void *b)
{
	return (*(double *)a)-(*(double *)b);
}

int main()
{
	int t,n;
	cin>>t;
	while (t--)
	{
		memset(a,0,sizeof(a));
		memset(m,0,sizeof(m));
		cin>>n;
		int i,j,k;
		int bsize=0;
		for (i=0;i<n;i++)
		{
			cin>>m[i];
			for (j=0;j<m[i];j++)
			{
				cin>>a[i][j].b>>a[i][j].p;
				b[bsize++]=a[i][j].b;
			}
		}
		qsort(b,bsize,sizeof(b[0]),cmp);
		double mmax=0;
		double mmin;
		double sump=0;
		double temp=0;
		for (i=b[0];i<=b[bsize-1];i++)
		{
			sump=0;
			for (j=0;j<n;j++)
			{
				mmin=32767;
				for (k=0;k<m[j];k++)
				{
					if (a[j][k].b>=i&&a[j][k].p<mmin)
					{
						mmin=a[j][k].p;
					}
				}
				sump+=mmin;
			}
			temp=i*1.0/sump;
			if(temp>mmax)
				mmax=temp;
		}
		printf("%.3lf\n",mmax);

	}
	return 0;
}

 

分享到:
评论

相关推荐

    POJ1018-Communication System

    北大POJ1018-Communication System 解题报告+AC代码

    通信系统:动态规划实践.pptx

    例如,在 POJ 1018 问题中,需要确定通信系统的最大性价比,即寻找使总带宽最大化的设备配置。使用动态规划,可以将问题分解成较小的子问题,并使用递归表达式来解决这些子问题。 递归表达式是动态规划的核心,用于...

    poj dp总结,动态规划分类

    ### poj dp总结:动态规划分类 #### 概述 动态规划(Dynamic Programming,简称DP)是一种在计算机科学和数学中广泛使用的算法策略,用于解决最优化问题。它通过将复杂问题分解为较简单的子问题来求解,并利用这些...

    POJ各题算法分类和题目推荐 ACM必看

    * 中等代码量:1001、1018、1037、1039、1054、1125、1655、2165、2210、2212、2225、2240、2241、2243、2246、2254、2303、2312、2339 * 长代码:1009、1010、1015、2050 五、结论 POJ平台上的题目涵盖了多种算法...

    poj上算法题目分类

    - 1010, 1011, 1018, 1020, 1054, 1062, 1256, 1321, 1363, 1501, 1650, 1659, 1664, 1753, 2078, 2083, 2303, 2310, 2329 **关键知识点:** - **图的基本概念**:了解节点、边、有向图、无向图等基本概念。 - **图...

    poj各种题型详细分类

    - **1018**:可能涉及到一维或多维DP。 - **1458 共同子序列**:典型的动态规划问题。 ### 五、数学类题目 此类题目通常需要较强的数学功底来解决,涉及数学定理、公式推导等内容。 #### 例题 - **1125 股票...

    poj_dp分类

    1018 (ac,̰ĵķиõdp˼) **题目描述**:此题较为综合,考察了动态规划思想的应用。 **解题思路**:结合贪心策略进行优化。 #### 3. 1050 (ac,άӶκͣʶӶκO(n)Ľⷠ!) **题目描述**:这是一道关于数组操作的...

    acm poj 源代码

    1001 1002 1003 1004 1005 1006 1007 1008 1011 1012 1013 1014 1015 1017 1018 1019 1028 1032 1042 1046 1050 1061 1065 1066 1067 1077 1080 1083 1088 1094 1111 1125 1135 1141 1157 1160 1161 1163 1166 1170 ...

    poj pku 解题报告

    1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1011 1012 1013 1014 1015 1017 1018 1019 1028 1032 1035 1040 1042 1045 1046 1047 1050 1056 1061 1062 1063 1065 1067 1068 1080 1083 1088 1089 1091 1094 ...

    poj题目分类

    题目编号如1018、1050、1083等,贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择策略,也即是局部最优解,希望最终能导致全局最优解。贪心算法适用于资源分配、任务调度、背包问题等场景。 ### 7....

    poj135道题的代码

    1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1011 1012 1013 1014 1018 1019 1028 1032 1040 1042 1045 1046 1047 1050 1056 1061 1062 1063 1065 1067 1068 1083 1088 1102 1113 1118 1126 1141 1142 1157 ...

    poj题目类型总结(每题用到的算法)

    根据提供的信息,我们可以看出这是一份关于POJ(Peking University Online Judge)平台上部分题目的分类总结。这份总结按照不同的算法和技术对题目进行了归类,旨在帮助学习者系统地掌握和练习不同类型的算法问题。...

    PKU源码。。。。。

    PKU,POJ共301题源代码。1001 1002 1003 1004 1005 1006 1007 1008 1011 1012 1013 1014 1015 1017 1018 1019 1028 1032 1042 1046 1050 1061 1065

    柳婼-PAT&蓝桥杯&LeetCode的学习路径&刷题经验1

    常见的OJ系统包括北京大学的POJ、杭州电子科技大学的OJ,以及PAT、蓝桥杯和LeetCode的题库。提交代码后,OJ会运行测试用例并返回结果。以下是一些常见状态术语: - AC (Accepted):表示程序代码正确,所有测试用例...

    北京大学acm题库 题目分类

    北京大学ACM题库分类是适合想做ACM题的人的题目分类,分类详细,涵盖了POJ(PKU ACM Online Judge)上的题目分类。该分类涵盖了多种算法和数据结构,包括排序、搜索、回溯、遍历、历法、枚举、数据结构的典型算法、...

Global site tag (gtag.js) - Google Analytics