水果店的难题

题目描述

炎热的夏天,来上一杯现榨的冰爽果汁想想都是一件惬意的事情!话说小王就看准了这一商机,在学校附近开了这么一家果汁店,但是最近他碰到了一个不大不小的难题:小王的果汁店里准备了K台榨汁机,当然每台榨汁机只能榨一种果汁,在某个时段内,一个客人点了某种果汁,如果恰好有某台果汁机榨过这种果汁,那么就直接给客人用这台果汁机接着榨就可以了,但是如果点的是一种新的果汁就需要找一台干净的果汁机来用,问题就出在这,如果这时候还有空的果汁机还好,如果没有的话小王就需要将某台刚才用过的拿去清洗,清洗的话呢就得浪费很多的时间和很多的水,小王是个很有经济头脑的人,他想知道在排队客人需求已知的情况下最少需要清洗多少次果汁机?假定开始时所有果汁机都是干净的,为了方便描述,我们将果汁编号为1(橙汁),2(苹果汁),3(葡萄汁)…

[友情提示:本店不售卖混合果汁]

输入输出格式

输入格式:
每组测试数据第一行包括两个整数K,N(1<=K<=10,1<=N<=100), 其中,K表示小王准备了K台干净的榨汁机,N表示排队等待的有N个客人,接下来N行,每行一个整数表示一个客人点的果汁种类Xi(1<=xi<=100).

输出格式:
输出在当前的请求序列下,小王最少需要清洗果汁机的次数

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
int n,m,las[205],nex[205],used[205],ans,num[205];
struct zt{
    int ys,yxj;
    bool operator < (const zt &a) const  {
        return a.yxj > yxj;   //优先级(后面会说到)
    }
};
priority_queue<zt>q;
int main(){
    scanf("%d%d",&n,&m);
    for(int i = 1;i <= m;i ++)
        scanf("%d",&num[i]);
    memset(las,0x3f,sizeof(las));
    for(int i = m;i >= 1;i --){  //注意逆序!
        nex[i] = las[num[i]];    //下一次榨汁编号
        las[num[i]] = i;         //当前榨汁编号
    }
    for(int i = 1;i <= m;i ++) { //贪心策略,当我们所有榨汁机都没有清洗时我们要选之后出现最晚的进行清洗
        if(used[num[i]]) {q.push((zt){num[i],nex[i]});continue;}   //不需要洗
        if(q.size() >= n) {
            while(!q.empty()&&!used[q.top().ys]) q.pop();
            ans ++;
            if(!q.empty()) used[q.top().ys] = 0,q.pop();
            else ans --;
        }
        q.push((zt){num[i],nex[i]});
        used[num[i]] = 1;
    }
    printf("%d",ans);
}

原文地址:https://www.cnblogs.com/czy-power/p/10354736.html

时间: 2024-11-05 17:22:32

水果店的难题的相关文章

秦绪文:月赚四万水果店微信倾情打造

每天,无数碎片化的信息总是绕不开马云丶阿里丶雷军丶小米--高大上的榜样要学习,但身边成功小案例更让人钦佩!这是一个活生生的现实中的例子,其实,营销经营的就是人性和平均法. 一周前的一个晚上,我在家里看我的微信附近的人,突然发现了我们楼下那个水果店的微信号,名字就是XX小区水果店,签名里面注明了可送货丶联系方式等.怀着好奇的心态我就加了他们的账号(个人微信,非公众平台),这时候他主动打招呼我,问我是不是在附近住?有没有他们的会员卡?最近有没有去过他们店里?就像跟朋友聊天一样-- 在交流的过程中我的

实验7:Problem G: STL——水果店

Description 小明经营着一个不大的水果店.现在他想要一份水果销售情况的明细表,这样就可以很容易掌握所有水果的销售情况了. Input 输入包含多组数据.每组测试数据的第一行是一个整数M(0<M<=100),表示有M次成功的交易.其后有M行数据,每行表示一次交易,由水果名称(长度不超过80)和交易的水果数目(正整数,不超过100)组成. Output 对于每一组测试数据,请你输出一份排版格式正确(请分析样本输出)的水果销售情况明细表.这份明细表包括所有水果的名称和其销售总数的信息.按照

水果店买水果系统

原代码: product_list = [{'name': '苹果', 'price': 10}, {'name': '榴莲', 'price': 30}, {'name': '草莓', 'price': 20}, {'name': '菠萝', 'price': 15}, ] # 1 创建一个购物车盛放水果 shopping_cart = {} # 2 提示用户输入钱 money_str = input('请展示一下你的钱:') if money_str.isdigit(): user_mone

纪念九一八朋友水果店按成本价搞活动,尝了一下帮大家推荐一下

纪念九一八,红富士苹果成本价搞活动,每箱5斤19.9包邮,活动地址:http://t.cn/Rc9zgOz 味道不错,帮大家推荐一下!

计蒜客练习题:水果店(嵌套map)

这道题主要就是考察嵌套map的使用 这道题我一开始用的map+pair但是怎么写都不对. 之后就求助万能的百度发现网上都是用嵌套map做的. 别说我还真不知道map该怎么嵌套,以及怎么调用嵌套map. map<string, map<string,int> > m; 定义在第二维,插入的话就跟二维数组一样(m[tm1][tm2] = tm3;). 调用的话需要定义两个不同的iterator一个是外层的,一个是内层的. 具体看本题代码. PS:注意输出格式! 附AC代码: #incl

倒下的水果营行:烧钱催不熟生鲜电商

在整个O2O死亡名单中,一个普适性的死亡规律就是烧钱烧到资金链断裂,而烧钱的主要流向均在盲目扩展规模,意图以规模覆盖足够人群来获得黏性和长尾. 文/张书乐 刊载于<销售与市场>管理版2016年2月刊 自2014年10月开设第一家门店,仅一年多,号称要做"水果业内的阿里巴巴"的水果营行就在全国20余个一二线城市,开设了300多家实体店.然而在2015年12月,几乎一夜之间,这个迅速膨胀的水果王国轰然倒塌,广州.深圳.东莞.杭州.南昌等城市的门店大量关门,12月16日,水果营行

生鲜电商三大难题未解 任性烧钱也白搭

生鲜电商为何是"死海":①标准化问题:②损耗和成本:③凌驾于标准化与冷链之上的"最后一公里",如何以"保鲜"模式送到消费者手中.三大难题解决不了,生鲜电商这档子事,其实就是烧钱也烧不出个所以然来. 文/张书乐 刊载于<销售与市场>管理版2015年06期 3月8日,苏宁超市公司正式宣布进军生鲜电商市场,开售自营生鲜产品,并命名为"苏鲜生".之前一天,步步高董事长王填宣布,4月底步步高云猴网生鲜正式上线.而在年前,并购

3304 水果姐逛水果街Ⅰ

3304 水果姐逛水果街Ⅰ 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 水果姐今天心情不错,来到了水果街. 水果街有n家水果店,呈直线结构,编号为1~n,每家店能买水果也能卖水果,并且同一家店卖与买的价格一样. 学过oi的水果姐迅速发现了一个赚钱的方法:在某家水果店买一个水果,再到另外一家店卖出去,赚差价. 就在水果姐窃喜的时候,cgh突然出现,他为了为难水果姐,给出m个问题,每个问题要求水果姐从第

【线段树】【分类讨论】水果姐逛水果街Ⅰ

3304 水果姐逛水果街Ⅰ 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 水果姐今天心情不错,来到了水果街. 水果街有n家水果店,呈直线结构,编号为1~n,每家店能买水果也能卖水果,并且同一家店卖与买的价格一样. 学过oi的水果姐迅速发现了一个赚钱的方法:在某家水果店买一个水果,再到另外一家店卖出去,赚差价. 就在水果姐窃喜的时候,cgh突然出现,他为了为难水果姐,给出m个问题,每个问题要求水果姐从第x家店出发到第y家店