当前位置: 首页 > news >正文

巧克力---贪心+堆模拟/优先队列

1.求最少,我用优先队列一直取最小最优的,那么答案也是最小的

2.逆着天进行堆/优先队列模拟
    ///为什么要逆着天?! 
    ///但如果有一些单价较低且保质期极短的商品,
    ///和一些单价最低但保质期较长的商品,
    ///从1到x就不会选择到单价较低的商品。

3.先按保质期从小到大排好序,然后从x到1模拟

4.保质期>=i就可以选,然后pq里top的c--,选最优的

5.c==0就弹出

P8769 [蓝桥杯 2021 国 C] 巧克力 - 洛谷

#include<bits/stdc++.h>
using namespace std;
#define N 100011
typedef  long long ll;
typedef pair<int,int> pii;
struct no
{int w,cc,q;
}a[N];
int x,n;
struct cmp
{bool operator()(const no &a,const no &b)const{if(a.w==b.w) return a.q<b.q;else return a.w>b.w;}
};
bool cmpp(no a,no b)
{return a.q<b.q;
}
priority_queue<no,vector<no>,cmp> pq;
ll an; 
int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>x>>n;for(int i=0;i<n;i++){cin>>a[i].w>>a[i].q>>a[i].cc;}sort(a,a+n,cmpp);///按保质期从小到大排序 int top=n-1;for(int i=x;i>=1;i--)///逆着天进行堆/优先队列模拟///为什么要逆着天?! ///但如果有一些单价较低且保质期极短的商品,///和一些单价最低但保质期较长的商品,///从1到x就不会选择到单价较低的商品。{while(a[top].q>=i)///大于等于i相当于在i时刻可以选 {pq.push(a[top]);top--;}an+=pq.top().w;///单价最小的,单价相同的日期长的在上面 no t=pq.top();pq.pop();t.cc--;///top的c--,如果是0就弹出去 pq.push(t);if(pq.top().cc==0) pq.pop();}cout<<an;return 0;}

相关文章:

  • 图像识别预处理(配合pytesseract使用)
  • 一个典型的Qt界面拆分(解耦)方案
  • figma MCP + cursor如何将设计稿生成前端页面
  • 链游技术破壁:NFT资产确权与Play-to-Earn经济模型实战
  • 【数据结构】B树
  • TP6 实现一个字段对数组中的多个值进行LIKE模糊查询(OR逻辑)
  • 【nano与Vim】常用命令
  • K8S认证|CKS题库+答案| 3. 默认网络策略
  • 无需域名,直接加密IP的SSL方案
  • 【Survival Analysis】【机器学习】【3】 SHAP可解釋 AI
  • DDD架构实战 领域层 事件驱动
  • MCP Server 之旅第 5 站:服务鉴权体系解密
  • vanna+deepseek+chainlit 实现自然语言转SQL的精度调优
  • 构建 MCP 服务器:第 4 部分 — 创建工具
  • 【零基础 快速学Java】韩顺平 零基础30天学会Java[学习笔记]
  • 打造你的 Android 图像编辑器:深入解析 PhotoEditor 开源库
  • 用设计模式重新思考(类FSM)验证:从混乱到优雅
  • ES6——数组扩展之Set数组
  • [TIP] Ubuntu 22.04 配置多个版本的 GCC 环境
  • 第7篇:中间件全链路监控与 SQL 性能分析实践
  • wordpress后台账号密码忘记/成都百度网站排名优化
  • 做视频网站广告收费/武汉seo排名优化
  • 中国糕点网页设计网站/售卖链接
  • 可信网站身份验证 必须做吗/百度搜图入口
  • 阿里云iis放网站/汕头seo关键词排名
  • 厦门网站建设公司怎么选/天津建站网