Question:http://poj.org/problem?id=1018
问题点:枚举。
 Memory: 564K        Time: 329MS
Language: C++ Result: Accepted #include <iostream>
#include <iomanip>
using namespace std; struct BP
{
int i;//第i种设备
int B;//设备带宽
int P;//设备价格
};
int cmp1(const void* a,const void* b)//排序按 i,P 升序排列
{
BP* ca = (BP*)a;
BP* cb = (BP*)b;
return (ca->i==cb->i?(ca->P - cb->P):(ca->i - cb->i));
}
int cmp2(const void* a,const void* b)//排序按 B 升序排列
{
BP* ca = (BP*)a;
BP* cb = (BP*)b;
return ca->B - cb->B;
}
int main()
{
int eg,num;
cin>>eg;
BP bp[];//排序按 i,P 升序排列
BP orderB[];//排序按 B 升序排列
double maxBP;//结果
int same,maxB,temp,i,j,k,cnt,idx;
while(eg--)
{
cin>>num;
memset(bp,,sizeof(bp));
k = cnt = maxB = ;
maxBP = ;
for(i=;i<num;i++)
{
cin>>same;//一种设备的数量
cnt += same;//所有设备的数量
temp = ;//记录一种设备的最大带宽
for(j=;j<same;j++,k++)
{
bp[k].i = i;
cin>>bp[k].B>>bp[k].P;
temp = (temp> && temp>bp[k].B)?temp:bp[k].B;
}
maxB = (maxB> && maxB<temp)?maxB:temp;//取所有设备最大带宽的的最小值,即B的取值上限
}
memcpy(orderB,bp,sizeof(bp));
qsort(bp,cnt,sizeof(BP),cmp1);//排序按 i,P 升序排列,用于取各类设备中大于B的最小P
qsort(orderB,cnt,sizeof(BP),cmp2);//排序按 B 升序排列 ,用于枚举B
for(i=;i<cnt && orderB[i].B<=maxB;i++)
{
k = orderB[i].B;//枚举B
temp = orderB[i].P;//当前情况 最小P
for(j=,idx=;j<cnt && idx < num;j++)
{
if(bp[j].i == orderB[i].i || bp[j].B < k || idx > bp[j].i) continue;
temp += bp[j].P;
idx = bp[j].i+;//如果第j类设备已取,idx指向下一类设备,(不能使用 idx++)
}
maxBP = (maxBP > && maxBP > double(k)/temp?maxBP:double(k)/temp);//取最大B/P值
}
cout<<fixed<<setprecision()<<maxBP<<endl;//输出必须小数点后3位,如1要输出1.000
}
//system("pause");
return ;
}

北大ACM(POJ1018-Communication System)的更多相关文章

  1. POJ1018 Communication System

      Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 26738   Accepted: 9546 Description We ...

  2. POJ 1018 Communication System(树形DP)

    Description We have received an order from Pizoor Communications Inc. for a special communication sy ...

  3. 北大ACM - POJ试题分类(转自EXP)

    北大ACM - POJ试题分类 -- By EXP 2017-12-03 转载请注明出处: by EXP http://exp-blog.com/2018/06/28/pid-38/ 相关推荐文: 旧 ...

  4. Communication System(dp)

    Communication System Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25006 Accepted: 8925 ...

  5. poj 1018 Communication System

    点击打开链接 Communication System Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21007   Acc ...

  6. poj 1018 Communication System 枚举 VS 贪心

    Communication System Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21631   Accepted:  ...

  7. POJ 1018 Communication System(贪心)

    Description We have received an order from Pizoor Communications Inc. for a special communication sy ...

  8. F - Communication System

    We have received an order from Pizoor Communications Inc. for a special communication system. The sy ...

  9. POJ 1018 Communication System (动态规划)

    We have received an order from Pizoor Communications Inc. for a special communication system. The sy ...

  10. 北大 ACM 分类 汇总

    1.搜索 //回溯 2.DP(动态规划) 3.贪心 北大ACM题分类2009-01-27 1 4.图论 //Dijkstra.最小生成树.网络流 5.数论 //解模线性方程 6.计算几何 //凸壳.同 ...

随机推荐

  1. Elasticsearch学习系列之单模式下API的增删改查操作

    这里我们通过Elasticsearch的marvel插件实现单模式下API的增删改查操作 索引的初始化操作 创建索引之前可以对索引进行初始化操作,比如先指定shard数量以及replicas的数量 代 ...

  2. tomcat用80port能够启动,可是浏览器不显示tomcat首页

    一.打开执行(ctrl+r)->输入cmd->确定->输入netstat -ano 结果检測到 :80port被system 占用,如图所看到的 打开进程发现确实被 PID为 4 的 ...

  3. Servlet学习笔记(八)—— 文件下载

    一.文件下载概述 比如图片或者HTML这类静态资源,仅仅要在浏览器中打开正确的网址就行下载.仅仅要资源放在应用程序文件夹或者其下的子文件夹中,但不在WEB-INF下.Servlet/JSP容器就会将资 ...

  4. OpenStack QA

    1 能用devstack部署生产环境的OpenStack吗? 不能,记着,不能!有些选项对生产环境不合适.生产环境能够考虑使用Crowbar部署OpenStack.相关文档例如以下:http://op ...

  5. tesnorflow Conv2DTranspose

    tensorflow/python/layers/convolutional.py # Infer the dynamic output shape: out_height = utils.decon ...

  6. 实时人工智能:微软发布Project Brainwave预览版 现场可编程门阵列(Field Programmable Gate Array,简称FPGA) 硬件设计可以迅速演进

    https://mp.weixin.qq.com/s/bAPiPURZd-YsbV5PbzwpQQ 编者按:随着各大公司对于数据计算的要求越来越高,实时AI成为了研究者们关注的重点.在美国西雅图举行的 ...

  7. HDU 4850 Wow! Such String!(欧拉道路)

    HDU 4850 Wow! Such String! 题目链接 题意:求50W内的字符串.要求长度大于等于4的子串,仅仅出现一次 思路:须要推理.考虑4个字母的字符串,一共同拥有26^4种,这些由这些 ...

  8. Android实战技巧之八:Ubuntu下切换JDK版本【转】

    本文转载自:http://blog.csdn.net/lincyang/article/details/42024565 Android L之后推荐使用JDK7编译程序,这是自然发展规律,就像是4年前 ...

  9. luogu 3375 【模板】KMP字符串匹配

    我太菜了 今天才学会kmp #include<iostream> #include<cstdio> #include<algorithm> #include< ...

  10. Spring中AOP的两种代理方式(Java动态代理和CGLIB代理-转载

    内容是摘抄的,不知最初的原作者,见谅 Java 动态代理.具体有如下四步骤: 通过实现 InvocationHandler 接口创建自己的调用处理器: 通过为 Proxy 类指定 ClassLoade ...