购买装备

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

描述

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

输入

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

输出

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

样例输入1

1
2 4
3 2
2 3

样例输出1

1 3

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<string>
#include<ctype.h>
#include<math.h>
#include<set>
#include<map>
#include<vector>
#include<queue>
#include<bitset>
#include<algorithm>
#include<time.h>
using namespace std;
void fre() { freopen("c://test//input.in", "r", stdin); freopen("c://test//output.out", "w", stdout); }
#define MS(x, y) memset(x, y, sizeof(x))
#define ls o<<1
#define rs o<<1|1
typedef long long LL;
typedef unsigned long long UL;
typedef unsigned int UI;
template <class T1, class T2>inline void gmax(T1 &a, T2 b) { if (b > a)a = b; }
template <class T1, class T2>inline void gmin(T1 &a, T2 b) { if (b < a)a = b; }
const int N = 1e5 + 10, M = 0, Z = 1e9 + 7, inf = 0x3f3f3f3f;
template <class T1, class T2>inline void gadd(T1 &a, T2 b) { a = (a + b) % Z; }
int casenum, casei;
int n, m;
struct A
{int v, c;bool operator < (const A & b)const{return c < b.c;}
}a[N];
struct Node
{int v, c;bool operator < (const Node & b)const{if (v != b.v)return v > b.v;return c > b.c;}
};
int sum[N];
priority_queue<Node>q;int main()
{scanf("%d", &casenum);for (casei = 1; casei <= casenum; ++casei){scanf("%d%d", &n, &m);for (int i = 1; i <= n; ++i){scanf("%d%d", &a[i].v, &a[i].c);}//先按照价格从小到大排序,得出数量sort(a + 1, a + n + 1);while (!q.empty())q.pop();//首先求得了最多能买的物品数量int num = 0;int nowCost = 0;for (int i = 1; i <= n; ++i){sum[i] = sum[i - 1] + a[i].c;if (sum[i] <= m){num = i;nowCost = sum[i];q.push({ a[i].v,a[i].c });}}//一开始把所有合法的都扔进去,然后开始考虑替换if (q.empty()){puts("0 0");continue;}for (int i = num + 1; i <= n; ++i){Node it = q.top();if (a[i].v > it.v && nowCost - it.c + a[i].c <= m){nowCost -= it.c;nowCost += a[i].c;q.pop();q.push({ a[i].v,a[i].c });}}printf("%d %d\n", num, q.top().v);}return 0;
}
/*
【题意】
http://acmoj.shu.edu.cn/problem/420/【分析】
首先,一定要先求出最多能购买的数量
然后可以用优先队列逐渐把当前价值低的替换掉,替换到不能替换为止(这个可以剪枝)
也可以二分,这个比较好写。【时间复杂度&&优化】
O(nlogn)*/

【“盛大游戏杯”第15届上海大学程序设计联赛 K】【贪心】购买装备相关推荐

  1. “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛:I. 丢史蒂芬妮

    丢史蒂芬妮 发布时间: 2017年7月8日 21:37   最后更新: 2017年7月8日 23:24   时间限制: 1000ms   内存限制: 128M 描述 有一天,空和白很无聊,决定玩盛大游 ...

  2. 随机传送迷宫“盛大游戏杯”第15届上海大学程序设计联赛夏季赛

    随机传送迷宫 发布时间: 2017年7月9日 20:20   最后更新: 2017年7月10日 21:13   时间限制: 1000ms   内存限制: 128M 描述 小Y做了一个随机迷宫生成器,生 ...

  3. 科大讯飞杯”第18届上海大学程序设计联赛(H dfs暴力) L、动物森友会 (网络流题 延伸题 E、Sunscreen)

    网络流,最大流,满流,最小割都是一个意思. H-纸牌游戏 这题看着牛客评论的题解惊呆了,都是些什么做法?看都不看不懂(太高级了)然后从AC代码中扒来了一份代码,就是dfs一下 从9到0开始选 假设当前 ...

  4. 第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛H

    思路: 首先要知道:11+12+13+14+...++1n=ln(n)+C \dfrac{1 }{1} + \dfrac{1 }{2} + \dfrac{1 }{3} + \dfrac{1 }{4}+ ...

  5. 第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛(部分题解)

    唉,好久没更新博客了,说明我这段时间在学习上都懈怠了Σ( ° △ °|||)︴ 昨天打了场金马赛,这网络-..我真的是无力吐槽-.. 前三题都是大水题,就不挂代码了: D-快速幂取模裸题 #inclu ...

  6. 好久没撸c,第一场回状态的题(埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛

    题目链接: 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 A:Wasserstein Distance ## 题意:有2大堆柱状图的土(总体积相同,问从第一堆土移动到第二堆消耗最少的 ...

  7. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 L-K序列

    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 L-K序列 链接:https://www.nowcoder.com/acm/contest/91/L 来源:牛客网 题目描述 给一个数组 ...

  8. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 A-Wasserstein Distance

    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 A-Wasserstein Distance 链接:https://www.nowcoder.com/acm/contest/91/A ...

  9. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 E-小Y吃苹果

    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 E-小Y吃苹果 链接:https://www.nowcoder.com/acm/contest/91/E 来源:牛客网 题目描述 小Y买 ...

  10. 2020上海高校程序设计竞赛暨第18届上海大学程序设计联赛夏季赛(同步赛)整理合集

    文章目录 分子 爵士 内存 同源 游戏 选择 露营 D.旅行 H.病毒 海高校程序设计竞赛暨第18届上海大学程序设计联赛夏季赛 分子 题目大意 在遥远的斯卡布罗集市,有机分子只能由 C,H,OC, H ...

最新文章

  1. 乐观锁和悲观锁的区别(最全面的分析)
  2. 【效率】如何有效提问
  3. 机器学习导论(张志华):核定义
  4. 独立成分分析ICA系列5:信息极大化的 ICA 算法
  5. xcode的bundle identifier修改
  6. BSP和JSP里的UI元素ID生成逻辑
  7. Java千百问_05面向对象(012)_泛型是什么
  8. pl/sql中文显示为乱码解决
  9. 页面上指定类型的控件的样式添加
  10. 回顾小程序2018年三足鼎立历程,2019年BAT火力全开
  11. 水印鲁棒性的分析matlab程序,图像数字水印+matlab程序
  12. LAMP(CentOS 7.2)环境下搭建WordPress
  13. C++11/14::右值引用
  14. 什么是医疗健康管理系统?
  15. Linux dstat 监控工具
  16. wpf 修改输入框 光标_WPF中鼠标光标的设置
  17. 智能家居 (9) ——人脸识别摄像头安装实现监控功能
  18. CSDN(Markdown编辑)怎样打出各种表情符号和文章目录【图文】
  19. 测量电源纹波-正确测量方法
  20. Java用POI导出Excel合并单元格、字体、居中样式

热门文章

  1. 自定义Exception类
  2. banner 图片自动轮播
  3. matlab zernike矩
  4. 三国演义人物关系分析大纲
  5. 知识图谱 Freebase 的基本概念
  6. 话费充值api接口 手机话费充值功能接入
  7. 股票实战--线性回归
  8. PhysX两轮载具简单实现
  9. Flutter 混合开发
  10. couldn't set locale: correctly报错的解决