HJ165 小红的优惠券

  • 题目
  • 题解(36)
  • 讨论(31)
  • 排行

入门 通过率:49.28% 时间限制:1秒 空间限制:256M

知识点贪心

校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。

描述

小红的购物车结算金额为 nn 元,她手中有 mm 张优惠券。第 jj 张优惠券的规则为"满 ajaj​ 元立减 bjbj​ 元",即若 n≧ajn≧aj​,则使用该券后需支付 n−bjn−bj​ 元。

小红至多使用一张优惠券,请问最少需要支付多少元?

输入描述:

第一行输入两个整数 n,m(1≦n≦105; 1≦m≦100)n,m(1≦n≦105; 1≦m≦100)。

接下来 mm 行,第 jj 行输入两个整数 aj,bj(1≦bj≦aj≦105)aj​,bj​(1≦bj​≦aj​≦105),描述第 jj 张优惠券。

输出描述:

输出一个整数,表示小红使用最优策略后需支付的最少金额。

示例1

输入:

复制代码
100 3
300 50
200 30
50 5

复制输出:

复制代码
95

复制说明:

复制代码

仅第三张券可用,支付 100−5=95100−5=95 元。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

using ll=long long;
using ull=unsigned long long;
using i128=__int128_t;
using u128=__uint128_t;
using ld=long double;

void solve()
{
	int n,m,x,y;
	cin >> n >> m;
	vector<int>v;//将所有可以使用的卷的优惠金额放进去
	while(m--)
	{
		cin >> x >> y;
		if(n>=x) v.push_back(y);
	}
	sort(v.begin(),v.end(),greater<int>());//降序排序 选出优惠力度最大的卷
	if(v.empty()) cout << n;//别忘了 一张卷都用不了 要输出n本身
	else cout << n-v[0];
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int t=1;
	//cin >> t;
	
	while(t--)
	{
		solve();
	}
	return 0;
}
相关推荐
DolphinDB智臾科技20 小时前
DolphinDB 走进东南大学 | 新型电力系统高频数据处理与算法落地实战
算法
Zzzzmo_20 小时前
前缀和算法
算法·前缀和
睡觉就不困鸭20 小时前
第十八天 有效的括号
数据结构·算法
_日拱一卒20 小时前
LeetCode:148排序链表
算法·leetcode·链表
小小de风呀20 小时前
de风——【从零开始学C++】(三):类和对象(中序):默认成员函数全解析
开发语言·c++
迷途之人不知返20 小时前
vector的模拟实现
c++
IpdataCloud20 小时前
IP查询工具的准确率怎么评估?一份可上生产的选型与验收指南
网络·人工智能·算法
生信研究猿20 小时前
leetcode 78.子集
算法·leetcode·深度优先
sycmancia20 小时前
Qt——文本编辑器中的功能交互
qt·算法
浅念-21 小时前
分治算法专题|LeetCode高频经典题目详细题解
数据结构·c++·算法·leetcode·职场和发展·排序·分治