HJ165 小红的优惠券

张开发
2026/4/6 23:05:50 15 分钟阅读

分享文章

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−595100−595 元。#includebits/stdc.h using namespace std; using lllong long; using ullunsigned long long; using i128__int128_t; using u128__uint128_t; using ldlong double; void solve() { int n,m,x,y; cin n m; vectorintv;//将所有可以使用的卷的优惠金额放进去 while(m--) { cin x y; if(nx) v.push_back(y); } sort(v.begin(),v.end(),greaterint());//降序排序 选出优惠力度最大的卷 if(v.empty()) cout n;//别忘了 一张卷都用不了 要输出n本身 else cout n-v[0]; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int t1; //cin t; while(t--) { solve(); } return 0; }

更多文章