LA3971组装电脑
题意:
你有b块钱,想要组装一台电脑,给你提供一些零件,每种零件提供一个或几个,组装电脑的前提是每种零件只能也必须选择一个,每种零件都有自己的种类,名字,价格,还有品质,要求是在能配成电脑的前提下所有零件中最小的品质最大(品质越大越好)。
思路:
最小的最大,第一反应就是二分,这个题目也不例外,我们只要二分品质就行了,品质的数据感觉比较大,但是直接去枚举应该也能过,如果担心过不了可以先把零件中所有涉及的品质都拿出来,答案肯定是这些数据中的一个,我们只要sort下,然后去二分枚举sort后的品质数组,每次枚举我们都会得到一个当前的品质值,对于每种物品,我们肯定是选择品质值满足要求的最小花费的那个零件,其他的没什么,细心点就行了,具体细节可以看代码。
#include<map>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<string>
#define N 1000 + 10
using namespace std;
typedef struct
{
int jg ,pz;
char str[22];
}NODE;
NODE node[N];
map<string ,int>mark;
int tmp[N] ,P[N] ,nowidp;
bool camp(NODE a, NODE b)
{
return a.jg < b.jg;
}
bool ok(int nowpz ,int n ,int szl ,int b)
{
mark.clear();
int sszl = 0 ,nowb = 0;
for(int i = 1 ;i <= n ;i ++)
{
if(node[i].pz < nowpz) continue;
if(!mark[node[i].str]) sszl ++ ,nowb += node[i].jg;
mark[node[i].str] = 1;
}
return sszl == szl && nowb <= b;
}
int main ()
{
int n ,b ,i ,szl ,t;
char str[22];
scanf("%d" ,&t);
while(t--)
{
scanf("%d %d" ,&n ,&b);
mark.clear();
szl = 0;
for(i = 1 ;i <= n ;i ++)
{
scanf("%s %s %d %d" ,node[i].str ,str ,&node[i].jg ,&node[i].pz);
if(!mark[node[i].str]) szl ++;
mark[node[i].str] = 1;
tmp[i] = node[i].pz;
}
sort(node + 1 ,node + n + 1 ,camp);
sort(tmp + 1 ,tmp + n + 1);
nowidp = 0;
for(i = 1 ;i <= n ;i ++)
if(i == 1 || tmp[i] != tmp[i-1])
P[++nowidp] = tmp[i];
int low = 1 ,up = nowidp ,mid ,Ans = P[1];
while(low <= up)
{
mid = (low + up) / 2;
if(ok(P[mid] ,n ,szl ,b))
{
Ans = P[mid];
low = mid + 1;
}
else up = mid - 1;
}
printf("%d\n" ,Ans);
}
return 0;
}
LA3971组装电脑相关推荐
- LA3971 组装电脑
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...
- 组装电脑配置单报价_哪家电脑店胆子这么大,竟敢用这种方式组装电脑,客户傻得无辜!...
如今可能是由于电商的原因导致很多装机电脑店生意不太景气了,懂电脑的人基本上都选择网购了,不懂电脑的人还是愿意在实体店装机,一般进电脑店装机的客户基本上都不懂或不太懂电脑,有些电脑店老板就开始动歪心思了 ...
- 关于计算机组装的作文,电脑小白组装电脑,能写出这样的配置,在下佩服!
原标题:电脑小白组装电脑,能写出这样的配置,在下佩服! 电脑小白组装电脑闹了笑话!组装电脑已经成为很多游戏爱好者的必备工具,就在刚刚,一位女生来找我组装电脑,可把我给笑坏了,下面小编跟大家分享一下是怎 ...
- 计算机组装需要的硬件,组装电脑选择硬件,只要记住2个装机思路,选好硬件配置不是难题...
要说选购一套电脑整机,如今大多数人还是喜欢自己选择硬件进行组装.毕竟根据自己的想法需求,去组装一套电脑整机,可以比到实体店组装少花一些冤枉钱. 电脑组装 其实,组装电脑选择硬件,自己动手选择硬件进行组 ...
- 计算机组装各个配件的选用,组装电脑各个配件装机心得与经验
小编给大家之前带来了不少装机心得,但是没有那么详细到每个电脑配件的各个配件的心得与经验,让消费者购买组装电脑更放心,不会被那些奸商欺骗购买了一些翻新,二手货,更不会在装机的中途被那么无良商家换货的可能 ...
- 电脑怎么换自己的壁纸_电脑硬件到底应该怎么选?自己应该如何组装电脑?
随着社会的不断进步发展,电脑已经完全普及到老百姓的生活中了,对于家用电脑来说我认为还是组装电脑比较好,因为组装电脑具有硬件配置灵活性优势,电脑硬件选择灵活了价格就灵活了,说白了也就是自己电脑的价格自己 ...
- 台式电脑配置单_5000元最强组组装电脑,游戏配置,组装电脑配置2020年11月更新...
在1000+的显卡断档的年代,4000元的配置是非常难配的.但是到了5000元的配置就豁然开朗. 下面装机100给大家带来一个5000元左右的配置. 装机100的原则是 在满足要求和保证稳定的情况下 ...
- 计算机组装网上攒机,手把手教你攒电脑:组装电脑全过程
组装电脑的过程 对于平常接触电脑不多的人来说,可能会觉得"装机"是一件难度很大.很神秘的事情.但其实只要你自己动手装一次后,就会发现,原来也不过如此(当然你最好先对电脑的各个配件有 ...
- 显卡在电脑什么位置_DIY组装电脑教程,新手也能学会自己组装电脑
今天电脑百科网为大家带来一篇关于如何组装电脑的实操教程,如果你想购买配件自己装机的话,不妨先收藏一下本文,别等到开始装机的时候才手忙脚乱. 在开始讲组装电脑教程之前我先提醒一下大家:组装电脑的时候一定 ...
最新文章
- 如何比较PixelCNN与DCGAN两种Image generation方法?
- 计算机病毒是什么文件形式,【文件病毒】文件病毒的格式、危害、特点_什么是文件病毒_佰佰安全网...
- 【浙大软件学院机试】深度优先搜索、并查集和优先级队列知识点(Python实现)
- php读取excel类——PHP-ExcelReader
- 【算法】深度学习神经网络都调哪些参数?
- 算法有偏见?总比人类识别强吧!
- python文件和路径操作
- 颜值控必备!一看就会的动态图表,让枯燥的图表变得生动起来!
- nowcoder 合并回文子串
- snmp windows工具_局域网IP扫描工具下载-局域网IP扫描工具(SoftPerfect Network Scanner)v7.3.0官方版...
- Euraka使用入门
- 防止撤回插件 Android,微信防撤回插件
- [论文笔记]Outfit Compatibility Prediction and Diagnosis with Multi-Layered Comparison Network
- linux环境下解压压缩包失败
- 离散数学第一章 命题逻辑
- 资深工程师,专家,研究员等进阶
- java微信支付v3系列——6.微信支付查询订单API
- 酒店评论数据分析和挖掘-展现数据分析全流程(一)报告展示篇
- 2019年的夏天,和CDEC生态大会在成都耍一哈儿
- Java调用第三方http接口 单点登录 HttpClient