pku 1018 DP Communication System解题报告
来源:互联网 发布:zigbee软件测试工程师 编辑:程序博客网 时间:2024/05/21 03:16
一、题目:Communication System
二、题意:买n种产品,每种产品也有m[j]种选择.每种产品各有加宽bandwide与价格price,顾客选择n种产品, 其中最大带宽B是所有装置最大带宽的最小值,价格P是所有装置价格之和,求B/P的最大值。
三、解决办法:
如果采用爆搜的话,时间肯定是不允许的。而从题意可知,如果加宽大而且价格便宜,那么这就更加有可能被选择到的;但如果我们开始爆搜价格之和的话,那将十分困难。我们可以先爆搜加宽bandwide,然后我们再用i从bandwide的low到high枚举,在每种产品选择中搜索加宽bandwide>=i与price较小者.再用贪心选择与更新的result(B/P的最大值)。
四、源代码:
#include "stdio.h"
int main()
{
freopen("1.txt", "r", stdin);
int t, n, m[100], b[100][100], p[100][100]; //输入的值
int i, j, k; //辅助变量
int high, low, temp, sum;
double result;
scanf("%d", &t);
while (t--)
{
scanf("%d", &n);
//设置初值,以便赋值.
high = 0;
low = 32767;
//获得一个最小和最大带宽:最小带宽low是各个设备最大带宽的最小值,
//最大带宽high是各个设备最大带宽的最大值.
//枚举band的最小值与最大值.
for (i = 0; i < n; i++)
{
scanf("%d", &m[i]);
for (j = 0; j < m[i]; j++)
{
scanf("%d%d", &b[i][j], &p[i][j]);
if (b[i][j] > high)
{
high = b[i][j];
}
if (b[i][j] < low)
{
low = b[i][j];
}
}
}
//从最小值递增到最大值进行寻找,计算各种设备价钱的最小值的和,
//然后计算出一个比值,如果比值比当前比值大,更换当前比值;
result = 0.0;
for (i = low; i <= high; i++)
{
sum = 0;
//贪心的选择n种品牌.
for (j = 0; j < n; j++)
{
temp = 32767;
for (k = 0; k < m[j]; k++)
{
//这里的band与price分别要最大与最小的
//这样Bmin/Psum就最大啦!
if (b[j][k] >= i && p[j][k] < temp)
{
temp = p[j][k];
}
}
sum += temp;
}
if ((double) i / (double) sum > result)
{
result = (double) i / (double) sum;
}
}
printf("%.3lf/n", result);
}
return 0;
}
五、time:47ms,memory:260k
- pku 1018 DP Communication System解题报告
- pku 1018 Communication System dp
- PKU ACM 1018 Communication System (DP)
- PKU 1018 Communication System
- PKU 1018 Communication System
- pku 1163 dp TheTriangle 解题报告
- pku 树形DP 1848 Tree 解题报告
- pku 树形dp 1849 two 解题报告
- pku 1141 Bracket Sequence DP 解题报告
- POJ 1018 Communication System (DP)
- POJ 1018 Communication System dp
- POJ 1018:Communication System - DP
- POJ 1018Communication System(DP)
- poj 1018 Communication System(DP)
- timus 1741. Communication Fiend URAL 解题报告 DP+读题
- acm pku 1018 Communication System的算法改进
- poj 1018 Communication System DP思想
- poj - 1018 - Communication System(dp)
- 如何对EXCEL一列的数据中快速提取不重复的记录
- How to use ComboBox Control in VC++ - 在VC中如何使用 ComboBox 控件
- 巧妙设置加强无线网络安全(转)
- directshow技术文章
- WPF里的DependencyProperty(1)
- pku 1018 DP Communication System解题报告
- WPF里的DependencyProperty(2)
- VStart50网址(个人的东西)
- WPF里的DependencyProperty(3)
- linux学习笔记 2
- javascript坐标
- WPF里的DependencyProperty(4)
- Double小数四舍五入及科学计算转换
- 惠普前总裁孙振耀指点职业规划