LA3971 组装电脑
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1972
题意:
有 b 块钱, n个配件,配件有 种类,名字,价格,和品质。要求每一类都要有,价格总和不能超过 b,最后要求最低的品质的那个配件的品质要最高。
分析:
二分。
二分品质x,低于 x 的筛掉,高于等于 x 的,选一个最便宜的。
处理好每种配件,插到vector中,输入麻烦一点。
![](/assets/blank.gif)
![](/assets/blank.gif)
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 组装电脑相关推荐
- LA3971组装电脑
题意: 你有b块钱,想要组装一台电脑,给你提供一些零件,每种零件提供一个或几个,组装电脑的前提是每种零件只能也必须选择一个,每种零件都有自己的种类,名字,价格,还有品质,要求是在能配成电脑 ...
- 组装电脑配置单报价_哪家电脑店胆子这么大,竟敢用这种方式组装电脑,客户傻得无辜!...
如今可能是由于电商的原因导致很多装机电脑店生意不太景气了,懂电脑的人基本上都选择网购了,不懂电脑的人还是愿意在实体店装机,一般进电脑店装机的客户基本上都不懂或不太懂电脑,有些电脑店老板就开始动歪心思了 ...
- 关于计算机组装的作文,电脑小白组装电脑,能写出这样的配置,在下佩服!
原标题:电脑小白组装电脑,能写出这样的配置,在下佩服! 电脑小白组装电脑闹了笑话!组装电脑已经成为很多游戏爱好者的必备工具,就在刚刚,一位女生来找我组装电脑,可把我给笑坏了,下面小编跟大家分享一下是怎 ...
- 计算机组装需要的硬件,组装电脑选择硬件,只要记住2个装机思路,选好硬件配置不是难题...
要说选购一套电脑整机,如今大多数人还是喜欢自己选择硬件进行组装.毕竟根据自己的想法需求,去组装一套电脑整机,可以比到实体店组装少花一些冤枉钱. 电脑组装 其实,组装电脑选择硬件,自己动手选择硬件进行组 ...
- 计算机组装各个配件的选用,组装电脑各个配件装机心得与经验
小编给大家之前带来了不少装机心得,但是没有那么详细到每个电脑配件的各个配件的心得与经验,让消费者购买组装电脑更放心,不会被那些奸商欺骗购买了一些翻新,二手货,更不会在装机的中途被那么无良商家换货的可能 ...
- 电脑怎么换自己的壁纸_电脑硬件到底应该怎么选?自己应该如何组装电脑?
随着社会的不断进步发展,电脑已经完全普及到老百姓的生活中了,对于家用电脑来说我认为还是组装电脑比较好,因为组装电脑具有硬件配置灵活性优势,电脑硬件选择灵活了价格就灵活了,说白了也就是自己电脑的价格自己 ...
- 台式电脑配置单_5000元最强组组装电脑,游戏配置,组装电脑配置2020年11月更新...
在1000+的显卡断档的年代,4000元的配置是非常难配的.但是到了5000元的配置就豁然开朗. 下面装机100给大家带来一个5000元左右的配置. 装机100的原则是 在满足要求和保证稳定的情况下 ...
- 计算机组装网上攒机,手把手教你攒电脑:组装电脑全过程
组装电脑的过程 对于平常接触电脑不多的人来说,可能会觉得"装机"是一件难度很大.很神秘的事情.但其实只要你自己动手装一次后,就会发现,原来也不过如此(当然你最好先对电脑的各个配件有 ...
- 显卡在电脑什么位置_DIY组装电脑教程,新手也能学会自己组装电脑
今天电脑百科网为大家带来一篇关于如何组装电脑的实操教程,如果你想购买配件自己装机的话,不妨先收藏一下本文,别等到开始装机的时候才手忙脚乱. 在开始讲组装电脑教程之前我先提醒一下大家:组装电脑的时候一定 ...
最新文章
- 总统先生,一路走好!
- Geany包含中文运行报错解决办法
- Python基础教程:属性值设置和判断变量是否存在
- linux – 我怎么知道我到somaxconn有多近?
- 由浅入深学“工厂模式”(3)
- 文献记录(part3)--Clusterpath An Algorithm for Clustering using Convex Fusion Penalties
- php中json_decode()和json_encode()的使用方法
- lightgbm 保存模型 过大_一个例子读懂LightGBM的模型文件
- php 修改文件属性命令行,Linux_linux中如何通过命令修改文件属性,ls -l即可查看目录信息-rw - phpStudy...
- 超经典的Android开源项目
- 一维前缀和,二维前缀和,一维差分,二维差分(翻译)
- Python Scrapy爬虫框架详解
- Python爬虫系列-------Scrapy框架爬取校花网校花图片
- js实现图片的随机抽奖
- 【开源】这个人脸生成器厉害了,网红脸、明星脸、萌娃脸通通都有
- 职场中最重要的情商,是管理情绪
- vue中,input输入框只允许输入数字
- 同时删除多个 Txt 文本文档的前几行
- 后台服务器CPU使用率高 问题分析方法
- 感慨鸿蒙谁为情种,开辟鸿蒙,谁为情种……
热门文章
- 简述python程序执行原理_Python程序的执行原理(1)
- python b64encode_Python base64模块详解 | 学步园
- java web问题
- php中表单的非空验证,Javascript的表单与验证-非空验证_javascript技巧
- FreeRTOS系列第2篇---FreeRTOS入门指南
- win10分屏快捷键无法使用_你知道哪些关于win10的快捷操作
- 数据结构与算法(C++)– 动态规划(Dynamic Programming)
- 活动报名 | 6位技术女神关于智能技术的实践分享
- 工业用微型计算机(11)-指令系统(8)
- rust(20)-字符