JZOJ 5461. 【NOIP2017提高A组冲刺11.8】购物
5461. 【NOIP2017提高A组冲刺11.8】购物
(File IO): input:shopping.in output:shopping.out
Description
小X 希望尽可能多地满足小Y 的愿望,所以小X 想要知道他至多能购买多少件商品。
Input
接下来n行每行包含两个整数Pi,Qi。
Output
Sample Input
4 1 7
3 2
2 2
8 1
4 3
Sample Output
3
样例解释:一种最优的购买方式是购买1,2,3号物品,并用优惠券购买物品3,总共花费为3+2+1=6。
#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
#include <algorithm>
#define LL long long
#define N 50007
using namespace std;
LL n, m, k, p[N], tot;
struct arr
{
LL pi, qi;
}q[N];
priority_queue < LL, vector<LL>, greater<LL> > Q; LL cmp(arr x, arr y)
{
return x.qi < y.qi;
} int main()
{
freopen("shopping.in", "r", stdin);
freopen("shopping.out", "w", stdout);
scanf("%lld%lld%lld", &n, &k, &m);
for (int i = ; i <= n; i++)
scanf("%lld%lld", &q[i].pi, &q[i].qi);
sort(q + , q + n + , cmp);
LL ans = , site = ;
for (int i = ; i <= k; i++)
{
if (m - q[i].qi >= )
{
m -= q[i].qi;
ans++;
Q.push(q[i].pi - q[i].qi);
site = i;
}
else break;
}
if (site < k)
{
printf("%lld", ans);
return ;
}
for (int i = site + ; i <= n; i++)
p[i - site] = q[i].pi;
tot = n - site;
sort(p + , p + n - site + );
LL j = ;
site++;
while (m >= && (j <= tot || site <= n))
{
LL now = Q.top();
LL mi = min(p[j], q[site].qi + now);
if (m - mi >= )
{
if (mi == p[j])
{
m -= p[j];
j++;
ans++;
if (j > tot) p[j] = 0x7f7f7f7f;
if (ans == n) break;
}
else
{
m -= q[site].qi + now;
ans++;
Q.pop();
Q.push(q[site].pi - q[site].qi);
site++;
}
}
else break;
}
printf("%lld", ans);
}
JZOJ 5461. 【NOIP2017提高A组冲刺11.8】购物的更多相关文章
- [JZOJ 5465] [NOIP2017提高A组冲刺11.9] 道路重建 解题报告 (e-dcc+树的直径)
题目链接: http://172.16.0.132/senior/#main/show/5465 题目: 小X所居住的X国共有n个城市,有m条无向道路将其连接.作为一个统一的国家,X 城的任意两个城市 ...
- JZOJ 5462. 【NOIP2017提高A组冲刺11.8】好文章
5462. [NOIP2017提高A组冲刺11.8]好文章 (File IO): input:article.in output:article.out Time Limits: 1000 ms M ...
- JZOJ 5456. 【NOIP2017提高A组冲刺11.6】奇怪的队列
5456. [NOIP2017提高A组冲刺11.6]奇怪的队列 (File IO): input:queue.in output:queue.out Time Limits: 1000 ms Mem ...
- JZOJ 5459. 【NOIP2017提高A组冲刺11.7】密室
5459. [NOIP2017提高A组冲刺11.7]密室 (File IO): input:room.in output:room.out Time Limits: 1000 ms Memory L ...
- JZOJ 5455. 【NOIP2017提高A组冲刺11.6】拆网线
455. [NOIP2017提高A组冲刺11.6]拆网线 (File IO): input:tree.in output:tree.out Time Limits: 1000 ms Memory L ...
- 5458. 【NOIP2017提高A组冲刺11.7】质数
5458. [NOIP2017提高A组冲刺11.7]质数 (File IO): input:prime.in output:prime.out Time Limits: 1000 ms Memory ...
- [JZOJ5455]【NOIP2017提高A组冲刺11.6】拆网线
Description 企鹅国的网吧们之间由网线互相连接,形成一棵树的结构.现在由于冬天到了,供暖部门缺少燃料,于是他们决定去拆一些网线来做燃料.但是现在有K只企鹅要上网和别人联机游戏,所以他们需要把 ...
- 【NOIP2017提高A组冲刺11.8】好文章
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> us ...
- 【NOIP2017提高A组冲刺11.6】拆网线
和syq大兄弟吐槽题目不小心yy出了正解.. 最优的选法就是选两个两个相互独立的,欸这不就是最大匹配吗?那多的企鹅就新加一条边呗?不够的就除以2上取整呗? 欸?AC了? 树也是一个二分图,最大匹配=最 ...
随机推荐
- Repair 暴力
Description standard input/outputStatements Alex is repairing his country house. He has a rectangula ...
- (转)CentOS 7系统详细开机启动流程和关机流程
CentOS 7系统详细开机启动流程和关机流程 原文:http://blog.csdn.net/yuesichiu/article/details/51350654 名称 bootup - 系统启动流 ...
- 从Flux到Redux详解单项数据流
从Flux到Redux是状态管理工具的演变过程,但两者还是有细微的区别的.但是最核心的都还是观察者模式的应用. 一.Flux 1. Flux的处理逻辑 通俗来讲,应用的状态被放到了store中,组件是 ...
- JAVA 集合类小结
一 集合和数组 因为本人也是个go的爱好者,所以对于集合类算是摸的比较透的. 说到集合,必须了解数组和集合. Java的数组长度固定,集合长度不定.集合是特定的数据结构的集合. 而go里面并没有集合, ...
- java关于类的构建
一开始老是把类的构建和代码的重构搞的混淆,现在理解的可能还好点(至少概念上不会出错了),简单的说类就是一个复杂的变量,这个变量里面含有属性.方法和构造方法,注意方法和构造方法是完全不同的两个概念,而且 ...
- VS中生成网站和发布网站的区别
VS中生成网站和发布网站的区别 生成网站:是网站项目的编译. 我们知道像一样的C#编译性语言,在运行程序的时候,首先都要经过编译成计算机识别的二进制代码,才能运行.还有网站编译后,浏览 ...
- sql server 2012不能全部用到CPU的逻辑核心数的问题
最近在工作中遇到了,sql server 2012 不能把CPU 的核心全部用到的问题.通过分析工具看到 总共CPU核心有72核,但sql 只能用到40核心,想信也有很多人遇到这问题,那么今天这节就先 ...
- IP地址与数字地址相互转换
/// <summary> /// IP地址转换成数字 /// </summary> /// <param name="addr">IP地址&l ...
- 【洛谷5358】[SDOI2019] 快速查询(模拟)
点此看题面 大致题意: 有单点赋值.全局加法.全局乘法.全局赋值.单点求值.全局求和\(6\)种操作.现在给出操作序列,以及\(t\)对正整数\(a_i,b_i\).让你处理\(t*q\)次操作,每次 ...
- fflush - 刷新一个流
SYNOPSIS 总览 #include <stdio.h> int fflush(FILE *stream); DESCRIPTION 描述 函数 fflush 强制在所给的输出流或更新 ...