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 ...
随机推荐
- ConcurrentHashMap1.7源码分析
参考:https://www.cnblogs.com/liuyun1995/p/8631264.html HashMap不是线程安全的,其所有的方法都未同步,虽然可以使用Collections的syn ...
- springboot实战(汪云飞)学习-1-1
java EE开发的颠覆者 spring boot 实战 随书学习-1 1.学习案例都是maven项目,首先要在eclipse 中配置 maven,主要修改maven的配置文件:配置文件下载链接: h ...
- visual studio code的使用
1.添加代码片段 参考:https://blog.csdn.net/qq_36370731/article/details/83014439 2.在vscode上运行Git 先打开vscode内置的G ...
- 2018-2019 ACM-ICPC Brazil Subregional Programming Contest F. Music Festival
题目:https://codeforces.com/gym/101908/problem/F 题意:给你n个舞台,每个舞台有很多个节目,每个节目有个开始时间,结束时间,价值,每个舞台至少出演过一个节目 ...
- 7 August
P1021 邮票面值设计 暴搜各面值. 剪枝1:面值递增,新面值 \(\in[G_{i-1}+1, n\cdot sum]\). 为什么上界不是 \(n\cdot G_{i-1}+1\) 呢? 剪枝2 ...
- python实现计时器(装饰器)
1.写一个装饰器,查看函数执行的时间 import time # 装饰器run_time,@run_time加在谁头上,谁就是参数fundef run_time(fun): start_time = ...
- 实现自己的shell--MIT xv6 shell
参考代码: #include <stdlib.h> #include <unistd.h> #include <stdio.h> #include <fcnt ...
- Java + selenium 元素定位(1)之By id/Name/ClassName
这篇文章开始,要介绍web自动化核心的内容,也是最困难的部分了,就是定位元素,并去对元素进行操作.想要对元素进行操作,第一步,也是最重要的一步,就是要找到这个元素,如果连元素都定位不到,后续什么操作都 ...
- mybatis的一些小细节
Mybatis要解决的问题: 1. 将sql语句硬编码到java代码中,如果修改sql语句,需要修改java代码,重新编译.系统可维护性不高. 设想如何解决? 能否将sql单独配置在配置文件中. 2. ...
- C语言|博客作业3
问题 答案 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://i.cnblogs.com/EditPosts.aspx?postid=11661995&update ...