1. 题目描述

Problem Statement

  You are playing a game called Slime Tycoon.You will be selling Slimonades in this game, and your goal is to sell as many as you can.

The game will consist of N game days, numbered 0 through N-1 in order.You are given two vector <int>s morning and customers with N elements each, and an int
stale_limit.These represent constraints on how many Slimonades you can produce and sell, as explained below.



In each game day, three things happen, in the following order:

  • Early in the morning of day i: All Slimonades that were produced stale_limit days ago (i.e., on day i-stale_limit) go stale. You cannot sell stale Slimonades, you must throw them away immediately.
  • During day i: You can produce at most morning[i] new Slimonades. (Formally, you choose an integer X between 0 and
    morning[i], inclusive, and produce X Slimonades.)
  • In the evening of day i: You can sell at most customers[i] Slimonades. (That is, if you have at mostcustomers[i] Slimonades, you sell all of them. Otherwise, you sell exactly customers[i] Slimonades. In
    that case, you get to choose which Slimonades you sell and which ones you keep for later days.)

What is the maximum total number of Slimonades that you can sell during these N days?

Definition

 
Class: SlimeXSlimonadeTycoon
Method: sell
Parameters: vector <int>, vector <int>, int
Returns: int
Method signature: int sell(vector <int> morning, vector <int> customers, int stale_limit)
(be sure your method is public)

Limits

 
Time limit (s): 2.000
Memory limit (MB): 256

Constraints

- morning will contain between 2 and 50 elements, inclusive.
- Each element of morning will be between 0 and 10000, inclusive.
- customers will contain the same number of elements as
morning
.
- Each element of customers will be between 0 and 10000, inclusive.
- stale_limit will be between 1 and N, inclusive.

Examples

 
{5, 1, 1}
{1, 2, 3}
2
Returns: 5
Here's one optimal solution.

  • Day 0: We produce 4 Slimonades, then sell 1 of them.
  • Day 1: We produce 1 Slimonade (so now we have 4). In the evening, we sell two of the Slimonades that were made yesterday.
  • Day 2: We still have one Slimonade that was made on day 0. It goes stale and we throw it away. We produce one more Slimonade. In the evening, we sell 2 Slimonades (the one made yesterday and the one made today).

2. 分析

采用如下的策略,每天尽可能多地生产,并且优先卖生产日期久的。。采用一个队列。。

3. 代码

class SlimeXSlimonadeTycoon
{
public:
int sell(vector <int> morning, vector <int> customers, int stale_limit)
{
if(morning.empty()) return 0; int que[100000];
int front = 0, rear = 0;
int count(0);
for(int i=0; i<morning.size(); ++i)
{
if(front - rear == stale_limit) ++rear;
que[front++] = morning[i]; while(rear < front && customers[i] > 0)
{
if(que[rear] > customers[i]){
count += customers[i];
que[rear] -= customers[i];
break;
}
else{
count += que[rear];
customers[i] -= que[rear];
++rear;
}
}
}
return int(count) ;
}
};

TopCoder----卖柠檬的更多相关文章

  1. JS—实现拖拽

    JS中的拖拽示例:    1)实现拖拽思路:当鼠标按下和拖拽过程中,鼠标与拖拽物体之间的相对距离保持不变    2)实现拖拽遇到的问题:        问题1:当鼠标按下移动过快时,离开了拖拽的物体时 ...

  2. 怎么让猫吃辣椒 转载自 xiaotie

    典故: 某日,毛.周.刘三人聊天. 毛:怎么能让猫自愿吃辣椒? 刘:掐着脖子灌. 毛:强迫不是自愿. 周: 先饿几天,再混到猫爱吃的东西里. 毛:欺骗不是自愿.把辣椒涂到猫肛门上,它就会自己去舔了. ...

  3. 【LeetCode】860. Lemonade Change 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  4. [LeetCode] Lemonade Change 买柠檬找零

    At a lemonade stand, each lemonade costs $5.  Customers are standing in a queue to buy from you, and ...

  5. 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户

    阅读目录 前言 怎么卖 领域服务的使用 回到现实 结语 一.前言 上篇中我们讲述了“把商品卖给用户”中的商品和用户的初步设计.现在把剩余的“卖”这个动作给做了.这里提醒一下,正常情况下,我们的每一步业 ...

  6. Java多线程卖票例子

    package com.test; public class SaleTickets implements Runnable { private int ticketCount = 10;// 总的票 ...

  7. TopCoder kawigiEdit插件配置

    kawigiEdit插件可以提高 TopCoder编译,提交效率,可以管理保存每次SRM的代码. kawigiEdit下载地址:http://code.google.com/p/kawigiedit/ ...

  8. 1奶茶店创业成本: 2发饰品加盟店创业成本 3眼镜行业店创业成本 从“程序员转行卖烧饼”想到IT人创业

    总结: -------奶茶店创业成本: 而这个奶茶店初期投资是:3万元加盟费+1万元保证金+8000装修+两万设备(冰柜.展示柜.收银机等等).别说赚钱,什么时候把初期投资赚回来呀! 一个店的利润就是 ...

  9. 记第一次TopCoder, 练习SRM 583 div2 250

    今天第一次做topcoder,没有比赛,所以找的最新一期的SRM练习,做了第一道题. 题目大意是说 给一个数字字符串,任意交换两位,使数字变为最小,不能有前导0. 看到题目以后,先想到的找规律,发现要 ...

  10. TopCoder比赛总结表

    TopCoder                        250                              500                                 ...

随机推荐

  1. 如何使用VS2013对C++进行编程

    https://msdn.microsoft.com/zh-cn/library/bb384842.aspx

  2. 用JavaBean实现数据库的连接和关闭,在jsp页面输出数据库中student表中学生的信息

    package com.hanqi.test; import java.sql.*; public class XveSheng { Connection conn; Statement st; Re ...

  3. winform开发框架之模块维护

    前言:模块维护试图解决的问题, 模块加载只用MEF的方式: MEF(Managed Extensibility Framework)是一个用于创建可扩展的轻型应用程序的库. 应用程序开发人员可利用该库 ...

  4. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序读取相关数据

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第七篇:为ASP.NET MVC应用程序 ...

  5. cubic-bezier贝塞尔曲线css3动画工具

    今天在一本叫<HTML5触摸界面设计与开发>上看到一个做弹跳球的复杂动画效果,首先加速下降,停止,然后弹起时逐渐减速.是用cubic-bezier贝塞尔曲线来完成的.所以特地去学习了一下关 ...

  6. aws在线技术峰会笔记-游戏解决方案

    选项1:可以将aws的SDK嵌入到APP中. 选项2:Mobile Hub自动生成代码. 选项3:开源免费的游戏引擎.可视化脚本编程,实现客户端的逻辑代码. 用户管理 Cognito Identity ...

  7. ssh框架介绍

    SSH 为 struts+spring+hibernate 的一个集成框架,是目前较流行的一种JAVA Web应用程序开源框架. Struts Struts是一个基于Sun J2EE平台的MVC框架, ...

  8. Http协议总结

    Http协议(Hyper Text Transfer Protocol)是目前网络上使用最广泛的,面向应用层的协议.它基于传输层的TCP协议进行通信.它是一种通用的,无状态的协议(不对当前的状态进行记 ...

  9. Shell重定向文件描述符

    #!/bin/bash      最近在看shell,各种困惑,不过解决困惑的感觉还是很不错的.废话少说,linux中使用文件描述符来标识每个文件对象.文件描述符为一个非负整数,可以唯一标识会话中打开 ...

  10. JQuery text()、html() 以及 val()

    获得内容 - text().html() 以及 val() 三个简单实用的用于 DOM 操作的 jQuery 方法: text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元 ...