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;
}
相关推荐
地平线开发者5 小时前
J6B vio scenario sample
算法
BothSavage17 小时前
Trae远程开发中DeepSeek自定义模型4054错误的排查与修复
算法
小林ixn17 小时前
从暴力到KMP:一道题彻底搞懂字符串匹配的前世今生
算法
烬羽19 小时前
字符串算法入门:从反转字符串到回文判断,面试不再慌
算法·面试
郝学胜_神的一滴19 小时前
CMake 034:生成器表达式:解耦构建时序、精简分支逻辑的终极利器
c++·cmake
先吃饱再说1 天前
判断回文字符串,从一行代码到双指针优化
算法
见过夏天1 天前
C++ 基础入门完全指南
c++
黄敬峰2 天前
深入理解算法核心:从递归思想、数组扁平化到快速排序
算法