/************************ 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 组装电脑相关推荐

  1. 组装电脑配置单报价_哪家电脑店胆子这么大,竟敢用这种方式组装电脑,客户傻得无辜!...

    如今可能是由于电商的原因导致很多装机电脑店生意不太景气了,懂电脑的人基本上都选择网购了,不懂电脑的人还是愿意在实体店装机,一般进电脑店装机的客户基本上都不懂或不太懂电脑,有些电脑店老板就开始动歪心思了 ...

  2. 关于计算机组装的作文,电脑小白组装电脑,能写出这样的配置,在下佩服!

    原标题:电脑小白组装电脑,能写出这样的配置,在下佩服! 电脑小白组装电脑闹了笑话!组装电脑已经成为很多游戏爱好者的必备工具,就在刚刚,一位女生来找我组装电脑,可把我给笑坏了,下面小编跟大家分享一下是怎 ...

  3. 计算机组装需要的硬件,组装电脑选择硬件,只要记住2个装机思路,选好硬件配置不是难题...

    要说选购一套电脑整机,如今大多数人还是喜欢自己选择硬件进行组装.毕竟根据自己的想法需求,去组装一套电脑整机,可以比到实体店组装少花一些冤枉钱. 电脑组装 其实,组装电脑选择硬件,自己动手选择硬件进行组 ...

  4. LA3971组装电脑

    题意:       你有b块钱,想要组装一台电脑,给你提供一些零件,每种零件提供一个或几个,组装电脑的前提是每种零件只能也必须选择一个,每种零件都有自己的种类,名字,价格,还有品质,要求是在能配成电脑 ...

  5. 计算机组装各个配件的选用,组装电脑各个配件装机心得与经验

    小编给大家之前带来了不少装机心得,但是没有那么详细到每个电脑配件的各个配件的心得与经验,让消费者购买组装电脑更放心,不会被那些奸商欺骗购买了一些翻新,二手货,更不会在装机的中途被那么无良商家换货的可能 ...

  6. 电脑怎么换自己的壁纸_电脑硬件到底应该怎么选?自己应该如何组装电脑?

    随着社会的不断进步发展,电脑已经完全普及到老百姓的生活中了,对于家用电脑来说我认为还是组装电脑比较好,因为组装电脑具有硬件配置灵活性优势,电脑硬件选择灵活了价格就灵活了,说白了也就是自己电脑的价格自己 ...

  7. 台式电脑配置单_5000元最强组组装电脑,游戏配置,组装电脑配置2020年11月更新...

    在1000+的显卡断档的年代,4000元的配置是非常难配的.但是到了5000元的配置就豁然开朗. 下面装机100给大家带来一个5000元左右的配置. 装机100的原则是 在满足要求和保证稳定的情况下 ...

  8. 计算机组装网上攒机,手把手教你攒电脑:组装电脑全过程

    组装电脑的过程 对于平常接触电脑不多的人来说,可能会觉得"装机"是一件难度很大.很神秘的事情.但其实只要你自己动手装一次后,就会发现,原来也不过如此(当然你最好先对电脑的各个配件有 ...

  9. 显卡在电脑什么位置_DIY组装电脑教程,新手也能学会自己组装电脑

    今天电脑百科网为大家带来一篇关于如何组装电脑的实操教程,如果你想购买配件自己装机的话,不妨先收藏一下本文,别等到开始装机的时候才手忙脚乱. 在开始讲组装电脑教程之前我先提醒一下大家:组装电脑的时候一定 ...

最新文章

  1. TF-IDF模型的概率解释
  2. 不用卷积,也能生成清晰图像,华人博士生首次尝试用两个Transformer构建一个GAN
  3. CIIS 2020专题论坛丨突破自然语言理解,找到人工智能出口
  4. 深入理解JAVA虚拟机 虚拟机性能监控和故障处理工具
  5. c打印行号和函数_使用C中的函数名称,行号从任何函数打印错误消息
  6. java判断tcp是否阻塞_connect()调用在TCP堆栈中是非阻塞的(java)是什么意思
  7. 【Java】如何较好地将int转化成String
  8. 数学打比方(函数和卷积)
  9. 如何在Ubuntu 16.04上安装和配置GitLab
  10. mysql常用的备份命令有哪些_Mysql常用命令及sql代码整理 非常实用值得收藏 - 文中之舞...
  11. 360加速球效果实现
  12. java实现简单QQ登录界面
  13. 整站下载工具webHttracker webside copier
  14. 计算机专业类的数学难吗,学计算机专业难吗数学很差能学吗
  15. 《自然语言处理技术综述(第三版)》(1)----正则表达式
  16. 开工大吉,开启新征程!
  17. tf第十二讲:TextCNN做文本分类的实战代码
  18. aero peek_如何在Windows中禁用Aero Peek
  19. 4.7 matlab交互式绘图工具(绘图工具栏)
  20. html中怎样写css路径,CSS 书写位置

热门文章

  1. 什么linux系统能连wifi密码,linux连wifi密码
  2. k3s使用中的常见问题
  3. linux下如何装NVIDIA显卡驱动(gt940m为例)
  4. 韩顺平 2022零基础学 Java 学习笔记(1)
  5. Sql 语法练习
  6. My Minesweeper
  7. 移动硬盘里面的文件怎么恢复
  8. ​公司福利 | 炎炎夏日下的一盒水果暖心窝
  9. SD卡 TF卡 , micro-SD卡信号接口引脚定义
  10. 热门的四款RK3399系列板卡产品大PK-谁是当家花旦?