原题





题目大意:给出你的预算和各类待选硬件来组装计算,同种类的硬件只需且必须选购一种,在保证预算足够的情况下求出最优的合计硬件质量。

根据木桶原理,合计硬件质量 = 所选购硬件中数值最低质量的硬件质量。

思路:很显然的二分答案模型,可以将最低质量二分答案后再用check函数判断该情况下是否满足预算要求,由于本题中N较小(<1000),所以可以直接枚举而不超时,当然亦可用贪心和数据结构优化。还有一个难点是同一类别的硬件的判断,我这里用了Map进行判断,再用vector存放同一类硬件的不同型号。

代码如下:

#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <cstdlib>
#include <vector>
#include <map>
#define MAXN 1007
#define INF 0x3f3f3f3f
using namespace std;
int T,n,m,tot,ans;
map<string,int> M;
struct Point { int price,quality; };
vector<Point> item[MAXN];
inline bool check(int x)
{
int sum=0;
for (int i=1;i<=tot;i++) {
int fl=INF;
for (int j=0;j<(int)item[i].size();j++) {
if (item[i][j].quality>=x) fl=min(fl,item[i][j].price);
}
if (fl==INF) return false;
sum+=fl;
}
return sum<=m;
}
int main()
{
scanf("%d",&T);
while (T--) {
ans=tot=0,M.clear();
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++) {
string Type,Name; int p,q;
cin>>Type>>Name>>p>>q;
if (!M.count(Type)) M[Type]=++tot;
item[M[Type]].push_back((Point){p,q});
}
/* for (int i=1;i<=tot;i++) {
for (int j=0;j<(int)item[i].size();j++)
printf("%d %d\n",item[i][j].price,item[i][j].quality);
printf("\n\n");
} */
int left=0,right=1000000000,mid; //二分质量
while (left<=right) {
mid=left+(right-left)/2;
if (check(mid)) ans=mid,left=mid+1;
else right=mid-1;
}
printf("%d\n",ans);
for (int i=1;i<=tot;i++) item[i].clear();
} return 0;
}

UVA12124 | Assemble (二分)的更多相关文章

  1. HDU 2333 Assemble(二分)

    Assemble Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  2. Uva 12124 Uva Live 3971 - Assemble 二分, 判断器, g++不用map.size() 难度:0

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

  3. UVA 12124 UVAlive 3971 Assemble(二分 + 贪心)

    先从中找出性能最好的那个数, 在用钱比較少的去组合,能组出来就表明答案在mid的右边,反之在左边, #include<string.h> #include<map> #incl ...

  4. 【二分答案+贪心】解决“最小值最大”问题(UVa 12124 - Assemble)

    Problem A - Assemble Time limit: 2 seconds Recently your team noticed that the computer you use to p ...

  5. 【二分答案】 【POJ3497】 【Northwestern Europe 2007】 Assemble 组装电脑

    Assemble Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3171   Accepted: 1013 Descript ...

  6. UVA 12124 Assemble(二分答案)

    题目链接:https://vjudge.net/problem/UVA-12124 垃圾vjudge毁我青春!! 首先这道题是解决“最小值最大”的问题,所以要二分答案. 在这里我们二分$quality ...

  7. LA 3971 (二分) Assemble

    题意: 你有b块钱想要组装一台电脑.给出n个配件的种类,品质和价格,要求每个种类的配件各买一个总价格不超过b且“品质最差配件”的品质因子应尽量大. 这种情况下STL的map的确很好用,学习学习 这种最 ...

  8. UVALive 3971 Assemble(模拟 + 二分)

    UVALive 3971 题意:有b块钱.想要组装一台电脑,给出n个配件的种类,名字,价格,品质因子.若各种类配件各买一个,总价格<=b,求最差品质配件的最大品质因子. 思路: 求最大的最小值一 ...

  9. UVALive 3971 Assemble(二分+贪心)

    本题思路不难,但是要快速准确的AC有点儿考验代码功力. 看了大白书上的标程,大有所获. 用map和vector的结合给输入分组,这个数据结构的使用非常精美,恰到好处. #include<iost ...

随机推荐

  1. tensorflow开发环境版本组合

    记录下各模块的版本 tensorflow 1.15.0       print tf.__version__ cuda 10.0.130            nvcc -v cudnn 7.6.4  ...

  2. Microsoft.EntityFrameworkCore.Tools 相关命令

    一.前言 Entity Framework(后面简称EF)作为微软家的ORM,自然而然从.NET Framework延续到了.NET Core. 二.程序包管理器控制台 为了能够在控制台中使用命令行来 ...

  3. jQuery的核心功能选择器

    选择器是jquery的核心 jquery选择器返回的对象是jquery对象,不会返回undefined或者null,因此不必进行判断 基本选择器: ID选择器  $("#ID") ...

  4. ​Microchip SPI串行SRAM和NVSRAM器件

    Microchip的SRAM和NVSRAM系列(SPI串行SRAM和NVSRAM设备)提供了一种轻松添加外部RAM的方式,且具有以下特性功能 特性低功耗CMOS技术:4μA最大待机电流 标准4引脚SP ...

  5. JAVA 增删改查接口命名规范(dao层与 service 层

    开发时,有很多规范,这里写的是命名规范. Dao 接口命名   insert batchInsert selectOne selectById count selectList update dele ...

  6. CentOS安装图解及配置

    CentOS-7-x86_64-Minimal安装图解 界面说明: Install CentOS 7 安装CentOS 7 Test this media & install CentOS   ...

  7. python命令行运行django项目, can't open file 'manage.py' 问题解决

     找到manage.py的绝对路径即可运行

  8. spring boot tomcat 部署

    前几天springboot项目部署到linux中,整个过程就是个坑啊.踩坑的过程中也学到了许多.spring boot 项目部署时由于其内置了tomcat和jdk,而且还都是8. 所以部署的话就分为两 ...

  9. LeetCode 面试题24. 反转链表

    题目链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/ 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. ...

  10. C#设计模式学习笔记:(3)抽象工厂模式

    本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7596897.html,记录一下学习过程以备后续查用. 一.引言 接上一篇C#设计模式学习笔记:简单工厂模式( ...