zoukankan      html  css  js  c++  java
  • TopCoder----卖柠檬

    版权声明:本文为博主原创文章,未经博主同意不得转载。

    https://blog.csdn.net/u012653791/article/details/24276991

    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) ;
    }
    };


  • 相关阅读:
    openssl自签发证书
    安装tomcat8 env
    路由信息相关 route 网卡
    安装jdk env
    sublime使用与配置
    docker仓库登录 配置insecure-registries
    harobor私有docker镜像仓库
    git版本回退的两种方式
    git diff命令的使用
    Kali Linux中的自带字典&crunch自建字典
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10738660.html
Copyright © 2011-2022 走看看