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;
}
相关推荐
rannn_11126 分钟前
【力扣hot100】链表专题|160、206、234、141、142
java·算法·leetcode·链表·面试·开发
数模竞赛Paid answer32 分钟前
2026年华东杯数学建模B题医药物流安排问题解题全过程文档及程序
算法·数学建模·数据分析·华东杯
不会代码的小猴1 小时前
21. 泛型编程上
开发语言·c++·笔记·算法
青瓦梦滋2 小时前
传输层UDP/TCP协议
linux·网络·c++·网络协议·tcp/ip·udp
AI备案指南-满满2 小时前
大模型与算法备案全流程详解:从零到通过的完整指南
人工智能·算法·备案·大模型备案·算法备案
江畔柳前堤2 小时前
LLM 训练核心机制深度解析:Warmup、Cosine Decay 与 Perplexity 的完整知识体系
网络·人工智能·深度学习·算法·机器学习·语音识别
一只旭宝2 小时前
细讲C加加【9】C++ std::function与std::bind详解|仿函数、绑定器、类成员绑定、占位符、成员偏移指针
开发语言·c++·算法
良木林2 小时前
子串 - LeetCode hot 100
算法·leetcode·职场和发展
陌诺曦.3 小时前
Python扩展小练习
算法