购买装备

发布时间: 2017年7月9日 18:17   最后更新: 2017年7月9日 21:05   时间限制: 1000ms   内存限制: 128M

描述

最近盛大的一款游戏传奇世界极其火爆。游戏玩家John,想购买游戏中的装备。已知游戏的商店里有n  件装备,第i  件装备具有属性值a i   ,购买需要花费b i   个金币。John想去购买这些装备,但是账号中只有m  个金币,John是个很贪婪的家伙,他想购买尽可能多的装备。并且在保证购买到最多件装备的情况下,他还想让他所购买的装备当中拥有最小属性值的装备属性值尽可能大

输入

输入测试组数T  ,每组数据第一行输入整数n  (1<=n<=100000  )和m  (1<=m<=10 9   ), 接下来有n  行,第i  行有两个数a i   , b i   (1<=a i   ,b i <=10000  ).

输出

对于每组数据,输出两个数字,第一个数字代表John最多可以购买的装备数,第二个数代表在John购买最多件装备的前提下,所购买的装备当中拥有最小属性值的装备的最大属性值(输入数据保证至少可以购买一件装备)

样例输入1 复制

1
2 4
3 2
2 3

样例输出1

1 3

思路:贪心+二分,首先按照价格从小到大对装备进行排序,贪心选取尽量多的装备数x,在这个装备数量x的前提下对所有选取的装备最小属性值y进行二分搜索,若装备属性值大于等于当前最小属性值的并且能够购买的最多的装备的数量小于x,则最小属性值偏大,可以再小点,否则再调整大一点,二分。。AC代码:
#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
#include<algorithm>
#include<queue>
#include<set>
#include<vector>
#include<cstring>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
const int N_MAX = 100000+4;
int t,n;//n件装备,m个金币
ll m;
int num = 0;//num为购买装备数
int SXZ[N_MAX];
struct zhuangbei {
int a, b;//ai属性值,bi金币
zhuangbei() {}
zhuangbei(int a,int b):a(a),b(b){
}
bool operator <(const zhuangbei &B)const {if (this->b != B.b) return this->b < B.b;else return this->a > B.a;
}
}zb[N_MAX];bool C(int shuxing) {ll sum =0;int res=0;//买的装备数for (int i = 0; i < n;i++) {if (sum+zb[i].b<=m) {//装备价格能接受if (zb[i].a>=shuxing) {//且当前装备属性值大于等于最低属性值,买sum += zb[i].b;res++;if (res >= num)break;//能买的装备足够多了
            }}else break;}if (res<num)return false;//能挑选的数量太少,说明属性值还应该低一些else return true;
}int main() {scanf("%d",&t);while (t--) {num = 0;scanf("%d%lld",&n,&m);for (int i = 0; i < n;i++) {scanf("%d%d",&zb[i].a,&zb[i].b);SXZ[i] = zb[i].a;}sort(zb, zb + n);sort(SXZ,SXZ+n);//对属性值从小到大排,二分出来的属性值必须是其中之一ll add = 0;for (int i = 0; i < n;i++) {add += zb[i].b;if (add <= m)num++;}int lb = 0, ub = n;while (ub-lb>1) {int mid = (ub+lb)>>1;if (C(SXZ[mid]))lb = mid;else ub = mid;}printf("%d %d\n",num,SXZ[lb]);}return 0;
}

转载于:https://www.cnblogs.com/ZefengYao/p/7208503.html

SHoj 420 购买装备相关推荐

  1. 2017上海金马五校 购买装备 贪心+二分Check

    购买装备 发布时间: 2017年7月9日 18:17   最后更新: 2017年7月9日 21:05   时间限制: 1000ms   内存限制: 128M 描述 最近盛大的一款游戏传奇世界极其火爆. ...

  2. Activity中的数据传送—案例: 购买装备

    1.先打开Android Studio 2.创建工程. (1)设计用户交互页面,如图: 程序对应的布局文件(activity_main.xml)如下所示,在布局代码中用到了ProgressBar(进度 ...

  3. Unity 结合数据库实现商城购买装备以及数据更新

    放假在家没事可做,游戏荒ing,做个商城教学,针对有一定基础的新手,先分析下商城购买装备是怎么实现的 购买流程 查询改装备的价格 查询当前玩家有多少钱 判断钱够不够买装备 如果够:召唤师的钱-=装备的 ...

  4. 文字游戏系统 可战斗 可充值 可购买装备 可升级的简单小游戏

    只上传了战士的,法师界面的大家可以从我分享的资源里找到, 简单易懂,适合小白来自己操作 话不多说,嘴炮大作战开始  大家可从我上传的资源,下载观看 go!go! go! 一,主页面可选择你要操作的功能 ...

  5. 王者荣耀购买装备----笔记

    ```python #游戏: '''1.选择人物2.购买武器 金币3.打仗 赢得金币4.选择删除武器5.查看武器6.退出游戏''' import randomprint('*'*40) print(' ...

  6. Activity (项目实战:选择宝宝装备-UsersRegister)【Intent打开Activity、数据传递-回传、更新进度条】

    源码[工程文件 --- 可以 直接 通过 git 拷贝到 Android Studio 上]: https://gitee.com/lwx001/UsersRegister 目  录 运行截图---展 ...

  7. 从《英雄联盟》的装备系统谈玩家行为与游戏设计

    EEA是探娱互动研究院(Explore Entertainment Academy),我们会定期分享我们对游戏研究的文章,希望通过解决一个又一个的命题帮助大家以及我们自己将游戏设计的理论系统化,最终提 ...

  8. g团最多的服务器,魔兽世界怀旧服:田园服务器的G团 打本就像白送装备 最后还分金...

    魔兽世界怀旧服田园服务器的G团不知道大家是否见过,是不是只是听过价格很诱人?如果是内部内销团,基本相当于打本送装备还发钱.田园服务器的G团甲虫壳1600,等于捡漏还能分金,这样的情况对于目前的怀旧服是 ...

  9. Android-回传数据(装备选择)

    装备选择 1.创建程序 装备选择程序对应的布局文件(activity_main.xml)布局代码使用到了控件ProgressBar(进度条),用来 显示小宝宝的生命值.攻击力和敏捷度的. <?x ...

  10. Activity的数据回传——案例:装备选择

    1.先打开Android Studio 2.创建工程. (1)设计用户交互页面,如图: 程序对应的布局文件(activity_main.xml)如下所示,在布局代码中用到了ProgressBar(进度 ...

最新文章

  1. 个人知识体系思维导图_高中数学知识点思维导图
  2. 借助码云快速安装 golang.org/x/lint/golint 和 golang.org/x/tools/ 等依赖
  3. 别人不让你发传单怎么办?
  4. 谷歌在外贸中的实战解析
  5. python输出变量地址_Python——变量
  6. 阻止滑动事件_重温DOM事件流,捕获、冒泡、useCapture、passive
  7. 03-树2. Tree Traversals Again (25)
  8. 搜索关键词采集YouTube视频字幕
  9. 狮子鱼小程序独立版安装配置教程
  10. jmeter的脚本录制3
  11. Hbase中的二级索引
  12. 数据预处理之数据清洗案例
  13. JAVA 9中module初探
  14. 用python进行数据分析(一:数据理解)
  15. react 控制台 Maximum call stack size exceeded 如何解决
  16. XJNU CTF 2018
  17. 改造家里的开关成为智能开关,保留原有开关控制,零火版,射频遥控器篇(二)
  18. Emun 枚举类型使用浅析——包括enumSet enumMap
  19. Win10 平台下, LightGBM GPU 版本的安装
  20. GDAL python教程基础篇(4)OGR拷贝方法

热门文章

  1. 2022-2027年中国精华素行业市场深度分析及投资战略规划报告
  2. 高中计算机奥林匹克竞赛试题及答案,高中数学奥林匹克竞赛试题及答案.doc
  3. php更换banner图片,jQuery简单实现banner图片切换
  4. 树莓派33/100 - Pico控制直流小马达,为智能避障小车提供动力
  5. vue实现下载excel模板、导入excel文件、导出excel文件
  6. python创建一个列表、用于存储同学姓名_python学习日记04,Python
  7. 正则表达式随记(3)常用的正则表达式
  8. SSD算法详解default box
  9. ESP32 文件存储 spiffs
  10. ECU Bootloader自学笔记