第十四届蓝桥杯三月真题刷题训练——第 1 天 第四题 巧克力题解
难点考虑当我们在考虑某一天时,总是纠结选价格低的还是选保质期短的,因为这会影响我们后面的选择。
如果我们无需关心后面,只着重与眼前,那么对于可以吃的巧克力,我们一定会选择最便宜的那种,这一定是正确的。
那么思考,什么时候是不需要考虑后面的天数呢 ?没错,我们倒着来考虑,先考虑最后一天能吃哪些巧克力,然后在所有能吃的巧克力中选一个最便宜的,接下来考虑倒数第二天。因为最后一天能吃的巧克力,在倒数第二天一定也能吃。 而且此时我们有可能可以添加一些巧克力,它在最后一天不能吃,而在倒数第二天能吃,显然从一堆巧克力中每次都要取出最小的,且需要动态维护增加和删除,那么我们需要想到优先队列。
将巧克力按保质期排序,然后从最后一天往第一天倒着考虑,每次将可以吃的巧克力放入优先队列中,如果发现某一天队列为空,说明无解。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef unsigned long long uLL;
typedef pair<int, int> PII;
#define pb(s) push_back(s);
#define SZ(s) ((int)s.size());
#define ms(s,x) memset(s, x, sizeof(s))
#define all(s) s.begin(),s.end()
const int inf = 0x3f3f3f3f;
const int mod = 1000000007;
const int N = 200010;
int x, n;
void solve()
{
cin >> x >> n;
std::vector<pair<int, PII>> v(n);
std::vector<int> cnt(n), c(n);
for (int i = 0; i < n; ++i) {
int a, b;
cin >> a >> b >> c[i];
v[i] = {b, {a, i}};
}
sort(all(v));
priority_queue<PII, vector<PII>, greater<PII> >q;
int l = n - 1;
LL ans = 0;
//倒着考虑
for (int i = x; i >= 1; i--) {
while (l >= 0 && v[l].first >= i) {
q.push(v[l].second);
l--;
}
if (q.size() == 0) {
cout << -1 << '\n';
return;
}
PII d = q.top();
ans += d.first;
cnt[d.second]++;
if (cnt[d.second] == c[d.second]) q.pop();
}
cout << ans << '\n';
}
int main()
{
ios_base :: sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int t = 1;
while (t--)
{
solve();
}
return 0;
}
相关推荐
蓝桥杯国赛题之C++分巧克力.zip
蓝桥杯国赛 蓝桥杯国赛题之C++分巧克力
解析蓝桥杯思维之真题训练:分巧克力
目录🍋其他真题🍋要点🍋源代码🍋其他真题 🍋其他真题 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足: 形状是正方形,边长是整数 大小相同 例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。 当然小朋友们都希望得到的巧克力尽可能大,你能帮小Hi计算出最大的边长是多少么? 输入 第一行包含两个整数N和
蓝桥杯真题·分巧克力解析.docx
C语言,包含解析与N-s流程图(流程图中即为代码演示)。
真题解析│蓝桥杯省赛真题之分巧克力.pdf
蓝桥杯资源,算法,解析,真题,讲解
【蓝桥杯竞赛】2025年蓝桥杯往年试题分类整理:编程类真题与备考资源汇总文档的主要内容
内容概要:本文档对2025年蓝桥杯往年试题进行了分类整理,涵盖编程类真题、客观题与单片机专项、真题资源与学习平台以及备考建议。编程类真题包括算法与数据结构(如分巧克力问题、求和问题、天干地支等)和基础编程题(如武功秘籍、熊怪吃核桃、煤球数目等),涉及多种编程技巧与逻辑推导能力。客观题与单片机专项部分则针对数据结构、Python语法、数学基础等方面进行考察,并涵盖单片机方向的省赛真题与知识点。真题资源与学习平台介绍了官方题库、全真模拟卷、第三方平台(如Dotcpp、CSDN、百度题解库)及其提供的功能。备考建议方面,提出分模块突破编程题与客观题,并推荐利用官方及第三方资源进行限时模拟与针对性练习。 适合人群:准备参加蓝桥杯竞赛的学生及编程爱好者,尤其是对编程类题目、单片机专项有一定兴趣和基础的人群。 使用场景及目标:①帮助考生熟悉蓝桥杯的出题风格和题型分布;②通过练习历年真题,提升编程技能与应试能力;③利用官方及第三方平台提供的资源进行有针对性的学习与模拟测试。 阅读建议:建议考生根据自身情况,先从编程类真题入手,逐步掌握常见算法与数据结构的应用,同时结合客观题与单片机专项进行综合复习。在备考过程中,充分利用官方题库和第三方平台提供的资源,进行限时模拟测试,找出薄弱环节并加以改进。


