uva12124 组装电脑
/************************ Author:fisty* Data:2014-12-10*二分法,最大化最小值*uva12124**********************/#include <cstdio>
#include <cstring>
#include <vector>
#include <map>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
int cnt; //组件的类型数
map<string, int> id;
const int max_n = 1005;int ID(string s){if(!id.count(s)) id[s] = cnt++; //当名字为s的类型没出现过,cnt++return id[s]; //返回名字
}
struct component{int price; //价格int quilty; //品质因子
};
int n, b; //总数目与预算
vector<component> comp[max_n];bool ok(int q){//品质因子大于等于q的零件并且可以组装成一台电脑,返回trueint sum = 0; //所有质量因子的总和for(int i = 0; i < cnt; i++){int cheapest = b + 1,m = comp[i].size(); for(int j = 0;j < m ;j ++){//遍历种类为i的所有大于q的物品,选取价值最小的if(comp[i][j].quilty >= q) cheapest = min(cheapest, comp[i][j].price);}if(cheapest == b+1) return false;sum += cheapest; if(sum > b) return false;} return true;
}
void solve(int max_q){int l = 0, r = max_q;while(l < r){int m = l + (r-l+1) / 2;if(ok(m)) l = m; //如果可以组装出一台预算不超过b的电脑,则提高质量因子.else r = m-1; }printf("%d\n", l);
}
int main(){int t; scanf("%d", &t);while(t--){scanf("%d%d", &n, &b);cnt = 0;//清零for(int i = 0;i < n; i++)comp[i].clear();id.clear();//inputint max_q = 0;for(int i = 0;i < n; i++){string type, name;int p, q; //价值与品质因子cin >> type >> name >> p >> q;max_q = max(max_q, q);comp[ID(type)].push_back((component){p, q});}solve(max_q);}return 0;
}
uva12124 组装电脑相关推荐
- 组装电脑配置单报价_哪家电脑店胆子这么大,竟敢用这种方式组装电脑,客户傻得无辜!...
如今可能是由于电商的原因导致很多装机电脑店生意不太景气了,懂电脑的人基本上都选择网购了,不懂电脑的人还是愿意在实体店装机,一般进电脑店装机的客户基本上都不懂或不太懂电脑,有些电脑店老板就开始动歪心思了 ...
- 关于计算机组装的作文,电脑小白组装电脑,能写出这样的配置,在下佩服!
原标题:电脑小白组装电脑,能写出这样的配置,在下佩服! 电脑小白组装电脑闹了笑话!组装电脑已经成为很多游戏爱好者的必备工具,就在刚刚,一位女生来找我组装电脑,可把我给笑坏了,下面小编跟大家分享一下是怎 ...
- 计算机组装需要的硬件,组装电脑选择硬件,只要记住2个装机思路,选好硬件配置不是难题...
要说选购一套电脑整机,如今大多数人还是喜欢自己选择硬件进行组装.毕竟根据自己的想法需求,去组装一套电脑整机,可以比到实体店组装少花一些冤枉钱. 电脑组装 其实,组装电脑选择硬件,自己动手选择硬件进行组 ...
- LA3971组装电脑
题意: 你有b块钱,想要组装一台电脑,给你提供一些零件,每种零件提供一个或几个,组装电脑的前提是每种零件只能也必须选择一个,每种零件都有自己的种类,名字,价格,还有品质,要求是在能配成电脑 ...
- 计算机组装各个配件的选用,组装电脑各个配件装机心得与经验
小编给大家之前带来了不少装机心得,但是没有那么详细到每个电脑配件的各个配件的心得与经验,让消费者购买组装电脑更放心,不会被那些奸商欺骗购买了一些翻新,二手货,更不会在装机的中途被那么无良商家换货的可能 ...
- 电脑怎么换自己的壁纸_电脑硬件到底应该怎么选?自己应该如何组装电脑?
随着社会的不断进步发展,电脑已经完全普及到老百姓的生活中了,对于家用电脑来说我认为还是组装电脑比较好,因为组装电脑具有硬件配置灵活性优势,电脑硬件选择灵活了价格就灵活了,说白了也就是自己电脑的价格自己 ...
- 台式电脑配置单_5000元最强组组装电脑,游戏配置,组装电脑配置2020年11月更新...
在1000+的显卡断档的年代,4000元的配置是非常难配的.但是到了5000元的配置就豁然开朗. 下面装机100给大家带来一个5000元左右的配置. 装机100的原则是 在满足要求和保证稳定的情况下 ...
- 计算机组装网上攒机,手把手教你攒电脑:组装电脑全过程
组装电脑的过程 对于平常接触电脑不多的人来说,可能会觉得"装机"是一件难度很大.很神秘的事情.但其实只要你自己动手装一次后,就会发现,原来也不过如此(当然你最好先对电脑的各个配件有 ...
- 显卡在电脑什么位置_DIY组装电脑教程,新手也能学会自己组装电脑
今天电脑百科网为大家带来一篇关于如何组装电脑的实操教程,如果你想购买配件自己装机的话,不妨先收藏一下本文,别等到开始装机的时候才手忙脚乱. 在开始讲组装电脑教程之前我先提醒一下大家:组装电脑的时候一定 ...
最新文章
- TF-IDF模型的概率解释
- 不用卷积,也能生成清晰图像,华人博士生首次尝试用两个Transformer构建一个GAN
- CIIS 2020专题论坛丨突破自然语言理解,找到人工智能出口
- 深入理解JAVA虚拟机 虚拟机性能监控和故障处理工具
- c打印行号和函数_使用C中的函数名称,行号从任何函数打印错误消息
- java判断tcp是否阻塞_connect()调用在TCP堆栈中是非阻塞的(java)是什么意思
- 【Java】如何较好地将int转化成String
- 数学打比方(函数和卷积)
- 如何在Ubuntu 16.04上安装和配置GitLab
- mysql常用的备份命令有哪些_Mysql常用命令及sql代码整理 非常实用值得收藏 - 文中之舞...
- 360加速球效果实现
- java实现简单QQ登录界面
- 整站下载工具webHttracker webside copier
- 计算机专业类的数学难吗,学计算机专业难吗数学很差能学吗
- 《自然语言处理技术综述(第三版)》(1)----正则表达式
- 开工大吉,开启新征程!
- tf第十二讲:TextCNN做文本分类的实战代码
- aero peek_如何在Windows中禁用Aero Peek
- 4.7 matlab交互式绘图工具(绘图工具栏)
- html中怎样写css路径,CSS 书写位置