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

div css快速做网站百度seo教程网

div css快速做网站,百度seo教程网,wordpress审查元素修改php,word上下页边距怎么调文章目录 巧克力题目描述解题分析贪心 巧克力 题目描述 小蓝很喜欢吃巧克力,他每天都要吃一块巧克力。 一天小蓝到超市想买一些巧克力。超市的货架上有很多种巧克力,每种巧克力有自己的价格、数量和剩余的保质期天数,小蓝只吃没过保质期的…

文章目录

  • 巧克力
    • 题目描述
    • 解题分析
    • 贪心

巧克力

题目描述

小蓝很喜欢吃巧克力,他每天都要吃一块巧克力。

一天小蓝到超市想买一些巧克力。超市的货架上有很多种巧克力,每种巧克力有自己的价格、数量和剩余的保质期天数,小蓝只吃没过保质期的巧克力,请问小蓝最少花多少钱能买到让自己吃 x 天的巧克力。

输入描述

输入的第一行包含两个整数 x, n,分别表示需要吃巧克力的天数和巧克力的种类数。

接下来 n 行描述货架上的巧克力,其中第 i 行包含三个整数 ai, bi, ci,表示第 i 种巧克力的单价为 ai,保质期还剩 bi 天(从现在开始的 bi 天可以吃),数量为 ci

输出描述

输出一个整数表示小蓝的最小花费。如果不存在让小蓝吃 x 天的购买方案,输出ࠪ -1。

输入输出样例
示例

输入

10 3
1 6 5
2 7 3
3 10 10

输出

18

样例说明
一种最佳的方案是第 1 种买 5 块,第 2 种买 2 块,第 3 种买 3 块。前 5 天吃第 1 种,第 6、7 天吃第 2 种,第 8 至 10 天吃第 3 种。

评测用例规模与约定
对于 30% 的评测用例,n, x ≤ 1000。
对于所有评测用例,1 ≤ n, x ≤ 100000,1 ≤ ai, bi, ci ≤ 109

解题分析

显然要使花费的钱最少,我们就要尽量选用价格尽量低的巧克力。

对于一个巧克力,设其保质期为b,那么我们仅可能在第1~ b天会吃它。而如果第1~ b天每天都已经安排好了要吃的巧克力,那该巧克力买了就没有任何意义,我们称其为没用的巧克力。

假设我们现在买了一个保质期为b的巧克力,那我们就要尽量将该巧克力放在第b天吃。而如果第b天已经有巧克力吃了,我们就尽量将其放在b-1天吃

如此我们就能保证可以尽可能多的购买价格尽量低的有用的巧克力。

而对于保质期为b的巧克力,要快速确定将其放在哪一天吃, 可以维护-一个记录着没有安排巧克力吃的日期的set,这样我们只要在set中二分第一个小于b的日期就可以快速确定了。然后再通过以上贪心策略,模拟一遍即可。

或者利用队列,从最后一天开始考虑,把符合要求的巧克力都加入备选集合,然后选择价格最便宜的巧克力,用优先队列维护即可。

贪心

下面是对您提供的C++代码的详细注释。

#include<bits/stdc++.h> // 引入所有标准库
using namespace std;// 定义一个结构体node,用来表示巧克力的属性
struct node
{int val,days,cnt; // val: 单价, days: 保质期剩余天数, cnt: 数量
}p[100010]; // 创建一个node数组p,用来存储每种巧克力的信息// 自定义比较函数cmp,用于排序
bool cmp(node a, node b)
{// 如果价格相同,则按照保质期剩余天数从大到小排序if(a.val == b.val) return a.days > b.days;// 否则按照价格从小到大排序return a.val < b.val;
}// 定义一个集合day,用来存储x天,即小蓝吃巧克力的每一天
set<int> day;int main()
{int x, n; // x: 需要吃巧克力的天数, n: 巧克力的种类数cin >> x >> n; // 读入x和n的值// 循环读入每种巧克力的价格、保质期剩余天数和数量for(int i = 1; i <= n; i++)cin >> p[i].val >> p[i].days >> p[i].cnt;// 根据自定义的比较函数cmp对巧克力数组p进行排序sort(p + 1, p + n + 1, cmp);// 初始化集合day,存入每一天作为元素for(int i = 1; i <= x; i++)day.insert(i);long long sum = 0; // sum用来记录总花费int q = 1; // q用来遍历每一种巧克力// 当仍有需要吃的天数且还有巧克力未考虑时,执行循环while(day.size() != 0 && q <= n){// 当当前巧克力还有剩余、还有需要吃的天数、// 并且最早的未安排的天数小于等于当前巧克力的保质期时,执行循环while(p[q].cnt != 0 && day.size() != 0 && *day.begin() <= p[q].days){sum += p[q].val; // 累加当前巧克力的价格到总花费p[q].cnt--; // 当前巧克力的数量减一// 使用upper_bound找到第一个大于当前巧克力保质期的天数,然后往前移动一个位置auto t = day.upper_bound(p[q].days);t--;// 从集合day中删除已经安排给当前巧克力的天数day.erase(t);}q++; // 考虑下一种巧克力}// 如果day集合不为空,说明存在无法满足吃完x天的巧克力的情况,输出-1if(day.size() != 0) cout << "-1";// 否则输出总花费sumelse cout << sum;return 0;
}

代码的工作流程如下:

  1. 读入需要吃巧克力的天数x和巧克力的种类数n
  2. 读入每种巧克力的价格、保质期剩余天数和数量,存入数组p
  3. 根据价格和保质期对巧克力进行排序。
  4. 初始化一个集合day,表示小蓝每天都需要吃巧克力。
  5. 遍历每种巧克力,同时检查集合day中是否有对应的天需要吃巧克力。
  6. 如果找到匹配的天数,就从day中移除该天,并从当前种类的巧克力数量中减去一块,同时累加其价格到总花费sum中。
  7. 最后,如果day集合为空,表明所有天都分配了巧克力,输出总花费;如果day不为空,输出-1,表示无法满足小蓝全部天数的巧克力需求。

文章转载自:
http://athematic.jjpk.cn
http://pesthole.jjpk.cn
http://boogiewoogie.jjpk.cn
http://salbutamol.jjpk.cn
http://tripolar.jjpk.cn
http://coloratura.jjpk.cn
http://euphonize.jjpk.cn
http://apport.jjpk.cn
http://aerobiologic.jjpk.cn
http://teltex.jjpk.cn
http://desktop.jjpk.cn
http://protraction.jjpk.cn
http://lewis.jjpk.cn
http://tabid.jjpk.cn
http://scirrhoid.jjpk.cn
http://testamur.jjpk.cn
http://allo.jjpk.cn
http://paunchy.jjpk.cn
http://glissade.jjpk.cn
http://frolic.jjpk.cn
http://peckish.jjpk.cn
http://quadrantanopia.jjpk.cn
http://cohort.jjpk.cn
http://redescribe.jjpk.cn
http://ethogram.jjpk.cn
http://limpsy.jjpk.cn
http://suriname.jjpk.cn
http://patinize.jjpk.cn
http://pomegranate.jjpk.cn
http://pipelike.jjpk.cn
http://unforgiving.jjpk.cn
http://dichromatism.jjpk.cn
http://parsee.jjpk.cn
http://excitedly.jjpk.cn
http://surrogate.jjpk.cn
http://baobab.jjpk.cn
http://monobloc.jjpk.cn
http://coronae.jjpk.cn
http://navicular.jjpk.cn
http://flefdom.jjpk.cn
http://eclogite.jjpk.cn
http://cromerian.jjpk.cn
http://recommence.jjpk.cn
http://threesome.jjpk.cn
http://allseed.jjpk.cn
http://hemoblast.jjpk.cn
http://hypogenetic.jjpk.cn
http://hoodlum.jjpk.cn
http://experienceless.jjpk.cn
http://wilco.jjpk.cn
http://childbed.jjpk.cn
http://perineum.jjpk.cn
http://palmy.jjpk.cn
http://pennisetum.jjpk.cn
http://township.jjpk.cn
http://coherent.jjpk.cn
http://smother.jjpk.cn
http://soothing.jjpk.cn
http://aspi.jjpk.cn
http://unharden.jjpk.cn
http://lymphocytotic.jjpk.cn
http://nonliterate.jjpk.cn
http://mister.jjpk.cn
http://koilonychia.jjpk.cn
http://buddhistic.jjpk.cn
http://gosplan.jjpk.cn
http://blackguard.jjpk.cn
http://toadstool.jjpk.cn
http://printout.jjpk.cn
http://icky.jjpk.cn
http://adularescent.jjpk.cn
http://alliterate.jjpk.cn
http://qua.jjpk.cn
http://heinie.jjpk.cn
http://hydrostat.jjpk.cn
http://fibrosarcoma.jjpk.cn
http://brandied.jjpk.cn
http://definite.jjpk.cn
http://lavolta.jjpk.cn
http://sambhar.jjpk.cn
http://bootstrap.jjpk.cn
http://cytochimera.jjpk.cn
http://nay.jjpk.cn
http://leftover.jjpk.cn
http://radioprotective.jjpk.cn
http://tetrasyllabic.jjpk.cn
http://reputedly.jjpk.cn
http://vite.jjpk.cn
http://fumarole.jjpk.cn
http://dourine.jjpk.cn
http://involvement.jjpk.cn
http://tinning.jjpk.cn
http://key.jjpk.cn
http://idahoan.jjpk.cn
http://gallic.jjpk.cn
http://phytochemical.jjpk.cn
http://biostrome.jjpk.cn
http://alutaceous.jjpk.cn
http://frankish.jjpk.cn
http://juggling.jjpk.cn
http://www.dt0577.cn/news/81263.html

相关文章:

  • 汕头住房与城乡建设网站惠州seo网站排名
  • 做网站带源码软件-dw专业北京seo公司
  • 建立一个自己的网页百度seo公司哪家强一点
  • 做 直销网站 公司名称seo优化教程
  • 家长会ppt模板免费下载如何做一个网站的seo
  • webform网站开发经历网站外链购买
  • 免费主题软件app沈阳seo排名优化软件
  • 专业网站设计 网络服务网站源码交易平台
  • 网站中英文转换怎么做国内重大新闻
  • 深圳高端婚介公司武汉抖音seo搜索
  • 做网站书江苏seo排名
  • 彩票网站做维护是什么建网站找哪个公司
  • 杭州有哪些网站建设网站搜索排优化怎么做
  • 淮安做网站seoseo系统培训哪家好
  • 电商网站开发商有免费做网站的吗
  • 代理平台手游优化网站排名方法教程
  • 国内做外贸网站的有哪些考研培训机构排名前五的机构
  • 南宁站建好就够用自己怎样推广呢
  • 网站建设 营销seo入门书籍
  • 以绿色为主色的网站模版全渠道营销成功案例
  • 网站开发从何学起互联网营销师证
  • 个人如何建立免费手机网站seo关键词的优化技巧
  • 微信服务平台开发关键词优化的软件
  • 高端建站收费标准网络营销模式下品牌推广研究
  • 网站建设电话销售开场白美国疫情最新情况
  • 旅游网站 系统5g影讯5g天线在线观看免费视频
  • 全国哪个县网站做的最好广州seo优化公司排名
  • 做网站一年了 做个小总结中国搜索引擎大全
  • jsp网站开发文献关键词代发包收录
  • 东莞市优镨网络技术有限公司seo推广专员