北大ACM(POJ1018-Communication System)
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)的更多相关文章
- POJ1018 Communication System
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 26738 Accepted: 9546 Description We ...
- POJ 1018 Communication System(树形DP)
Description We have received an order from Pizoor Communications Inc. for a special communication sy ...
- 北大ACM - POJ试题分类(转自EXP)
北大ACM - POJ试题分类 -- By EXP 2017-12-03 转载请注明出处: by EXP http://exp-blog.com/2018/06/28/pid-38/ 相关推荐文: 旧 ...
- Communication System(dp)
Communication System Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25006 Accepted: 8925 ...
- poj 1018 Communication System
点击打开链接 Communication System Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21007 Acc ...
- 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 ...
- F - Communication System
We have received an order from Pizoor Communications Inc. for a special communication system. The sy ...
- POJ 1018 Communication System (动态规划)
We have received an order from Pizoor Communications Inc. for a special communication system. The sy ...
- 北大 ACM 分类 汇总
1.搜索 //回溯 2.DP(动态规划) 3.贪心 北大ACM题分类2009-01-27 1 4.图论 //Dijkstra.最小生成树.网络流 5.数论 //解模线性方程 6.计算几何 //凸壳.同 ...
随机推荐
- C#程序如何把窗体文件从从一个项目中复制到另一个项目
一个窗体有三个文件,全部拷贝到新的项目中 在新的项目中点击显示所有文件,然后右击导入的文件,点击包括在项目中,会自动修改颜色(此时还没有被识别为窗体) 重启这个项目,三个文件已经被识别出来了 ...
- hadoop(九) - hbase shell命令及Java接口
一. shell命令 1. 进入hbase命令行 ./hbase shell 2. 显示hbase中的表 list 3. 创建user表,包括info.data两个列族 create 'user' ...
- redis 事务 及发布于订阅功能
事务: Redis事务可以一次执行多个命令,事务具有以下特征: 1.隔离操作:事务中的所有命令都会序列化.按顺序地执行,不会被其他命令打扰. 2.原子操作:事务中的命令要么全部被执行,要么全部都不执行 ...
- mac svn cornerstone 破解版资源以及使用方法(仅供学习,非商业使用)
mac svn 可视化客户端,找了好久,不知道是我搜索的有问题还是怎么了,没有特别好用的. 后来发现了一个大神做的破解版的 cornerstone,具体大神的博客我给忘记了,后续找到会贴出地址,以供膜 ...
- HTTPie: a CLI, cURL-like tool for humans
HTTPie github HTTPie 是用 Python 编写,用到了 Requests 和 Pygments 这些出色的库. 主要特性: 直观的语法 格式化和色彩化的终端输出 内置 JSON 支 ...
- YTU 2635: P4 游戏中的Human角色
2635: P4 游戏中的Human角色 时间限制: 1 Sec 内存限制: 128 MB 提交: 524 解决: 328 题目描述 在一个平面打斗游戏中,任何的角色(Role)都有血量(bloo ...
- 51Nod 1967 路径定向 —— 欧拉回路
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1967 显然是欧拉回路问题,度数为奇数的点之间连边,跑欧拉回路就可以 ...
- Java 泛型 一
泛型在Java中有很重要的地位,网上很多文章罗列各种理论,不便于理解,本篇将立足于代码介绍.总结了关于泛型的知识. 先看下面的代码: List list = new ArrayList(); list ...
- attr 和 prop的区别和使用
一. attr和prop的区别 要想弄清楚attr和prop的区别,就要先搞清楚js中使用DOM方法获取设置属性和使用对象方法获取设置属性的区别. 在javascript中使用DOM方法设置获取属性值 ...
- Nginx配置try_files实践一
参考资料: http://linuxplayer.org/2013/06/nginx-try-files-on-multiple-named-location-or-serverhttp://stac ...