题意:
      你有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组装电脑相关推荐

  1. LA3971 组装电脑

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 如何比较PixelCNN与DCGAN两种Image generation方法?
  2. 计算机病毒是什么文件形式,【文件病毒】文件病毒的格式、危害、特点_什么是文件病毒_佰佰安全网...
  3. 【浙大软件学院机试】深度优先搜索、并查集和优先级队列知识点(Python实现)
  4. php读取excel类——PHP-ExcelReader
  5. 【算法】深度学习神经网络都调哪些参数?
  6. 算法有偏见?总比人类识别强吧!
  7. python文件和路径操作
  8. 颜值控必备!一看就会的动态图表,让枯燥的图表变得生动起来!
  9. nowcoder 合并回文子串
  10. snmp windows工具_局域网IP扫描工具下载-局域网IP扫描工具(SoftPerfect Network Scanner)v7.3.0官方版...
  11. Euraka使用入门
  12. 防止撤回插件 Android,微信防撤回插件
  13. [论文笔记]Outfit Compatibility Prediction and Diagnosis with Multi-Layered Comparison Network
  14. linux环境下解压压缩包失败
  15. 离散数学第一章 命题逻辑
  16. 资深工程师,专家,研究员等进阶
  17. java微信支付v3系列——6.微信支付查询订单API
  18. 酒店评论数据分析和挖掘-展现数据分析全流程(一)报告展示篇
  19. 2019年的夏天,和CDEC生态大会在成都耍一哈儿
  20. Java调用第三方http接口 单点登录 HttpClient

热门文章

  1. Oracle Data Guard 主库 归档文件 删除策略 .
  2. linux 死锁分析
  3. Java读书笔记05 类与对象
  4. Java中的String数据类型归纳
  5. hibernate之关联关系(一对多)
  6. JavaScript实现省市联动
  7. Socket.IO 客户端 API IO
  8. 【最小费用最大流】N. April Fools' Problem (medium)
  9. IP分类以及特殊IP
  10. javaSE基础04