UVA 12124 UVAlive 3971 Assemble(二分 + 贪心)
先从中找出性能最好的那个数,
在用钱比較少的去组合,能组出来就表明答案在mid的右边,反之在左边,
#include<string.h>
#include<map>
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
map<string,int> vic;//以字符映射数字
int end,start;
int num;
int m,n;
int sba,sbb;
char name[1000];
int pnum[1005];
struct node{
int v,q;
}p[1005][1005];
bool cmp(node a,node b)
{
return a.v<b.v;
}
int judge(int mid)
{
int sum=0,i,j;
for(i=1;i<num;i++)
{
for(j=0;j<pnum[i];j++)
{
if(p[i][j].q>=mid&&sum+p[i][j].v<m)
{
sum+=p[i][j].v;
break;
}
}
if(j==pnum[i])//质量高了
return 0;
}
return 1;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
vic.clear();//映射
scanf("%d %d\n",&n,&m);
memset(pnum,0,sizeof(pnum));
end=0;
start=0;
num=1;
for(int i=0;i<n;i++)
{
scanf("%s%*s%d%d",name,&sba,&sbb);
if(end<sbb)
end=sbb;
if(!vic[name])
{
vic[name]=num++;
p[vic[name]][pnum[vic[name]]].v=sba;
p[vic[name]][pnum[vic[name]]++].q=sbb;
}
else
{
p[vic[name]][pnum[vic[name]]].v=sba;
p[vic[name]][pnum[vic[name]]++].q=sbb;
}
}
for(int i=0;i<num;i++)
sort(p[i],p[i]+pnum[i],cmp);
int mid;
while(start<end)
{
mid=(end+start)>>1;
if(judge(mid))
{
if (start == mid)
break;
start=mid;
}
else
end=mid;
}
if(judge(mid+1))
mid++;
printf("%d\n",mid);
}
return 0;
}
UVA 12124 UVAlive 3971 Assemble(二分 + 贪心)的更多相关文章
- uvalive 3971 - Assemble(二分搜索 + 贪心)
题目连接:3971 - Assemble 题目大意:有若干个零件, 每个零件给出的信息有种类, 名称, 价格, 质量, 现在给出一个金额, 要求在这个金额范围内, 将每个种类零件都买一个, 并且尽量 ...
- UVALive 3971 Assemble(模拟 + 二分)
UVALive 3971 题意:有b块钱.想要组装一台电脑,给出n个配件的种类,名字,价格,品质因子.若各种类配件各买一个,总价格<=b,求最差品质配件的最大品质因子. 思路: 求最大的最小值一 ...
- 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 ...
- UVALive 3971 Assemble(二分+贪心)
本题思路不难,但是要快速准确的AC有点儿考验代码功力. 看了大白书上的标程,大有所获. 用map和vector的结合给输入分组,这个数据结构的使用非常精美,恰到好处. #include<iost ...
- UVaLive 3971 Assemble (水题二分+贪心)
题意:你有b元钱,有n个配件,每个配件有各类,品质因子,价格,要每种买一个,让最差的品质因子尽量大. 析:很简单的一个二分题,二分品质因子即可,每次计算要花的钱的多少,每次尽量买便宜且大的品质因子. ...
- UVa 1616 Caravan Robbers (二分+贪心)
题意:给定 n 个区间,然后把它们变成等长的,并且不相交,问最大长度. 析:首先是二分最大长度,这个地方精度卡的太厉害了,都卡到1e-9了,平时一般的1e-8就行,二分后判断是不是满足不相交,找出最长 ...
- uvalive 3971 Assemble
https://vjudge.net/problem/UVALive-3971 题意: 现在你要组装一台电脑,每个电脑的一种类型的配件都有多种选择,它们的名字是不同的. 现在给出已有的元件,每种类型都 ...
- Codeforces Gym 100231B Intervals 线段树+二分+贪心
Intervals 题目连接: http://codeforces.com/gym/100231/attachments Description 给你n个区间,告诉你每个区间内都有ci个数 然后你需要 ...
- Uva 11729 Commando War (简单贪心)
Uva 11729 Commando War (简单贪心) There is a war and it doesn't look very promising for your country. N ...
随机推荐
- 获取android的SDK或者手机目录路径
获取android的SDK或者手机目录路径 Google为我们提供了API来获取SDK或者手机目录路径: 1.获取SD卡目录 File file1 = Environment.getExternalS ...
- [转载]H3C S3600 DHCP-SERVER 配置【原创】
原文地址:H3C S3600 DHCP-SERVER 配置[原创]作者:旅行者萧 案例要求: 在H3C S3600-28TP-SI 的vlan 里配置DHCP server,使用vlan 里部分网段为 ...
- yii1 session
在 Yii框架中使用session 的笔记: 首先,在Yii框架中,你不需要像标准PHP代码那样使用session_start(),在Yii框架中,autoStart 属性缺省被设置为true,所以, ...
- [牛客挑战赛 30D] 小A的昆特牌 解题报告 (组合数学)
interlinkage: https://ac.nowcoder.com/acm/contest/375/D description: solution: 我们枚举步兵的数量$x$,还剩下$S-x$ ...
- 用Webpack构建Vue项目
开始之前,需要安装node环境.(安装过程在此就不啰嗦了) 1.创建基本结构 首先我们要创建一个空文件夹(我这里叫todos,你可以随便命名)作为项目的根目录. 创建一个没有任何依赖关系的pack ...
- B - Calculating Function
Problem description For a positive integer n let's define a function f: f(n) = - 1 + 2 - 3 + .. + ( ...
- iOS 应用开发入门指南
前言:http://www.guomii.com/posts/20250安装工具:http://www.guomii.com/posts/20255工具:http://www.guomii.com/p ...
- 免费获取Bootstrap模板的方法
Bootstrap是Twitter推出的一个开源的用于前端开发的工具包,其中中包含了丰富的Web组件,根据这些组件,可以快速的搭建一个漂亮.功能完备的网站. 最近通过了Bootstrap中文网学习了其 ...
- Three入门学习笔记整理
一.官方网站:https://threejs.org 二.关于Three.js 三.开始 四.实例 基本结构 结果 五.概念 坐标系 场景 相机 灯光 3D模型 六.简单动画 七.交互控制 结束 # ...
- MSSQL_20160719_在作业步骤中使用sp_send_dbmail遇到的问题
需求: 在作业步骤中使用sp_send_dbmail发出邮件, 并将数据库中的日志表通过@query参数导出文本作为邮件附件 遇到错误: 服务器 DB-DWH-1,第 1 行 服务器主体 " ...