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;
}
相关推荐
一去不复返的通信er40 分钟前
力扣-图论-岛屿数量
算法·leetcode·图论
青瓦梦滋1 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
程序 代码狂人4 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
HDU-Dade4 小时前
【校招笔试真题】简要介绍 Self-Attention 的前沿算法
人工智能·算法
小郎君6586 小时前
Vue keep-alive 切标签后滚动位置回顶?因为 onDeactivated 里读到的 scrollTop 是 0
算法
CodeYp20197 小时前
第15讲:二叉搜索树
开发语言·c++·二叉搜索树
邵奈一7 小时前
GPT-6.1 Terra速度是Sol的3倍,价格减半
算法
RaaS1007 小时前
Node.js Brotli RCE 漏洞自查指南:fetch、undici、axios 都在影响面,三分钟确认你的版本
人工智能·深度学习·算法
shehuiyuelaiyuehao7 小时前
算法56,重排链表
数据结构·算法·链表