LA 3971 Assemble(二分)
题目:
给你b元钱,让你组装一台电脑,有n个配件,属性有 种类 名字 价格 品质,每种类型选至少一个,并且最小品质最大。输出这个最大的最小品质。
白书上说了,最小值最大的问题一般是二分来求解答案。在这里我们二分这个品质。这个题在判断时因为数据较小,所以线性查找了,如果遇到大数据就要排序+lower_bound了...
代码如下:
#include <bits/stdc++.h> using namespace std;
const int M=;
int cnt,n,b;
map<string,int> id;
int ID(string s)
{
if (!id.count(s))
id[s]=cnt++;
return id[s];
}
struct Component
{
int price,quality;
};
vector<Component>comp[M];
bool ok(int q)
{
int sum=;
for(int i=;i<cnt;++i){
int cheapest=b+,m=comp[i].size();
for (int j=;j<m;++j)
if (comp[i][j].quality>=q)cheapest=min(cheapest,comp[i][j].price);
if (cheapest==b+) return false;
sum+=cheapest;
if (sum>b) return false;
}
return true;
}
int main()
{
int t;
//freopen("de.txt","r",stdin);
scanf("%d",&t);
while (t--)
{
scanf("%d%d",&n,&b);
cnt=;
for (int i=;i<n;++i)
comp[i].clear();
id.clear();
int maxq=;
for (int i=;i<n;++i)
{
char type[],name[];
int q,p;
scanf("%s%s%d%d",type,name,&p,&q);
maxq=max(maxq,q);
comp[ID(type)].push_back((Component){p,q});
}
int L=,R=maxq;
while(L<R)
{
int M=L+(R-L+)/;
if (ok(M))
L=M;
else
R=M-;
}
printf("%d\n",L);
}
return ;
}
LA 3971 Assemble(二分)的更多相关文章
- 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 ...
- UVA 12124 UVAlive 3971 Assemble(二分 + 贪心)
先从中找出性能最好的那个数, 在用钱比較少的去组合,能组出来就表明答案在mid的右边,反之在左边, #include<string.h> #include<map> #incl ...
- uvalive 3971 - Assemble(二分搜索 + 贪心)
题目连接:3971 - Assemble 题目大意:有若干个零件, 每个零件给出的信息有种类, 名称, 价格, 质量, 现在给出一个金额, 要求在这个金额范围内, 将每个种类零件都买一个, 并且尽量 ...
- LA 3971 (二分) Assemble
题意: 你有b块钱想要组装一台电脑.给出n个配件的种类,品质和价格,要求每个种类的配件各买一个总价格不超过b且“品质最差配件”的品质因子应尽量大. 这种情况下STL的map的确很好用,学习学习 这种最 ...
- UVALive 3971 Assemble(模拟 + 二分)
UVALive 3971 题意:有b块钱.想要组装一台电脑,给出n个配件的种类,名字,价格,品质因子.若各种类配件各买一个,总价格<=b,求最差品质配件的最大品质因子. 思路: 求最大的最小值一 ...
- LA 3971 组装电脑(二分)
https://vjudge.net/problem/UVALive-3971 题意:你有b块钱,想要组装一台电脑.给出n个配件各自的种类.品质因子和价格,要求每种类型的配件各买一个,总价格不超过b, ...
- UVALive 3971 Assemble(二分+贪心)
本题思路不难,但是要快速准确的AC有点儿考验代码功力. 看了大白书上的标程,大有所获. 用map和vector的结合给输入分组,这个数据结构的使用非常精美,恰到好处. #include<iost ...
- UVaLive 3971 Assemble (水题二分+贪心)
题意:你有b元钱,有n个配件,每个配件有各类,品质因子,价格,要每种买一个,让最差的品质因子尽量大. 析:很简单的一个二分题,二分品质因子即可,每次计算要花的钱的多少,每次尽量买便宜且大的品质因子. ...
- HDU 2333 Assemble(二分)
Assemble Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
随机推荐
- PWN入门的入门——工具安装
安装pwntool: 命令行运行: pip install pwntools python import pwn pwn.asm("xor eax,eax") 出现'1\xc0' ...
- 前端每日实战:46# 视频演示如何用纯 CSS 创作一个在容器中反弹的小球
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/jKVbyE 可交互视频教程 此视频 ...
- python中的__init__
__init__ __init__中__表示系统默认命名,init是初始化的意思.由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去.以学生类为例,通过定义 ...
- IntelliJ IDEA更新maven依赖包
问题: IntelliJ IDEA自动载入Maven依赖的功能很好用,但有时候会碰到问题,导致pom文件修改却没有触发自动重新载入的动作,此时需要手动强制更新依赖. 方法: 方法一: ①.右键单击项目 ...
- Bootstarp-源码分析-alert.js v3.x和v4.x的对比
一些概念 1. 使用 data-api 调用 就是给所有带有data-dismiss="alert"的元素绑定点击事件 v3.x: $(document).on('click.bs ...
- Asp.Net Core 第04局:依赖注入
总目录 前言 本文介绍Asp.Net Core中默认的依赖注入(DI)模式. 环境 1.Visual Studio 2017 2.Asp.Net Core 2.2 开局 第一手:依赖注入说明 1.一个 ...
- EasyUI的datagrid表格行高度增加
这里以easyui的default样式为例: 找到easyui--->themes-->default-->easyui.css-->Ctrl+F找到.datagrid-row ...
- 爬虫(一)—— 请求库(一)requests请求库
目录 requests请求库 爬虫:爬取.解析.存储 一.请求 二.响应 三.简单爬虫 四.requests高级用法 五.session方法(建议使用) 六.selenium模块 requests请求 ...
- Windows server 2016远程桌面登录和修改3389端口
- 在Python中处理大型文件的最快方法
我们需要处理的各种目录中有大约500GB的图像.每个图像的大小约为4MB,我们有一个python脚本,一次处理一个图像(它读取元数据并将其存储在数据库中).每个目录可能需要1-4小时才能处理,具体取决 ...