题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1972

题意:

有 b 块钱, n个配件,配件有 种类,名字,价格,和品质。要求每一类都要有,价格总和不能超过 b,最后要求最低的品质的那个配件的品质要最高。

分析:

二分。

二分品质x,低于 x 的筛掉,高于等于 x 的,选一个最便宜的。

处理好每种配件,插到vector中,输入麻烦一点。

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4
 5 const int maxn = 1000 + 5;
 6 const int inf = 0x3f3f3f3f;
 7 int n,b;
 8
 9 struct Component {
10     int price;
11     int quality;
12 };
13
14 vector<Component> comp[maxn];
15
16 int cnt;
17 map<string,int> id;
18 int ID(string s) {
19     if(!id.count(s))
20         id[s] = cnt++;
21     return id[s];
22 }
23
24 bool ok(int q)
25 {
26     int sum = 0;
27     for(int i=0;i<cnt;i++) {
28         int m = comp[i].size();
29         int cheap = inf;
30         for(int j=0;j<m;j++) {
31             if(comp[i][j].quality>=q)
32                 cheap = min(cheap,comp[i][j].price);
33         }
34         if(cheap==inf) return false;
35         sum+=cheap;
36         if(sum>b) return false;
37     }
38     return true;
39 }
40
41 int main()
42 {
43     int t;
44     scanf("%d",&t);
45     while(t--) {
46         cnt = 0;
47         int maxq = 0;
48         scanf("%d%d",&n,&b);
49         for(int i=0;i<n;i++) {
50             comp[i].clear();
51         }
52
53         for(int i=0;i<n;i++) {
54             char type[30],name[30];
55             int p,q;
56             scanf("%s%s%d%d",type,name,&p,&q);
57             maxq = max(maxq,q);
58             comp[ID(type)].push_back((Component){p,q});
59         }
60
61         int L = 0,R=maxq+1;
62         while(L<R) {
63             int M = L + (R-L+1)/2;
64             if(ok(M))
65                 L = M;
66             else R = M - 1;
67         }
68         printf("%d\n",L);
69     }
70     return 0;
71 }

View Code

转载于:https://www.cnblogs.com/TreeDream/p/6701591.html

LA3971 组装电脑相关推荐

  1. LA3971组装电脑

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 总统先生,一路走好!
  2. Geany包含中文运行报错解决办法
  3. Python基础教程:属性值设置和判断变量是否存在
  4. linux – 我怎么知道我到somaxconn有多近?
  5. 由浅入深学“工厂模式”(3)
  6. 文献记录(part3)--Clusterpath An Algorithm for Clustering using Convex Fusion Penalties
  7. php中json_decode()和json_encode()的使用方法
  8. lightgbm 保存模型 过大_一个例子读懂LightGBM的模型文件
  9. php 修改文件属性命令行,Linux_linux中如何通过命令修改文件属性,ls -l即可查看目录信息-rw - phpStudy...
  10. 超经典的Android开源项目
  11. 一维前缀和,二维前缀和,一维差分,二维差分(翻译)
  12. Python Scrapy爬虫框架详解
  13. Python爬虫系列-------Scrapy框架爬取校花网校花图片
  14. js实现图片的随机抽奖
  15. 【开源】这个人脸生成器厉害了,网红脸、明星脸、萌娃脸通通都有
  16. 职场中最重要的情商,是管理情绪
  17. vue中,input输入框只允许输入数字
  18. 同时删除多个 Txt 文本文档的前几行
  19. 后台服务器CPU使用率高 问题分析方法
  20. 感慨鸿蒙谁为情种,开辟鸿蒙,谁为情种……

热门文章

  1. 简述python程序执行原理_Python程序的执行原理(1)
  2. python b64encode_Python base64模块详解 | 学步园
  3. java web问题
  4. php中表单的非空验证,Javascript的表单与验证-非空验证_javascript技巧
  5. FreeRTOS系列第2篇---FreeRTOS入门指南
  6. win10分屏快捷键无法使用_你知道哪些关于win10的快捷操作
  7. 数据结构与算法(C++)– 动态规划(Dynamic Programming)
  8. 活动报名 | 6位技术女神关于智能技术的实践分享
  9. 工业用微型计算机(11)-指令系统(8)
  10. rust(20)-字符