TopCoder----卖柠檬
来源:互联网 发布:矩阵相似和等价的区别 编辑:程序博客网 时间:2024/06/09 20:59
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 intstale_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 andmorning[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.)
Definition
Class:SlimeXSlimonadeTycoonMethod:sellParameters:vector <int>, vector <int>, intReturns:intMethod signature:int sell(vector <int> morning, vector <int> customers, int stale_limit)(be sure your method is public)Limits
Time limit (s):2.000Memory limit (MB):256Constraints
-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: 5Here'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) ;}};
3 0
- TopCoder----卖柠檬
- TopCoder
- topcoder
- Topcoder
- topcoder
- topcoder
- Topcoder
- 柠檬缘
- bzoj4709柠檬
- 守夜的柠檬
- 柠檬草的回味
- 柠檬与红茶
- 柠檬市场及其应用
- 雀巢柠檬味C
- 柠檬片泡水的功效
- 【柠檬也能减肥】
- superoj779 柠檬的密码
- BZOJ4709 [Jsoi2011]柠檬
- 第7周作业1——背包问题
- 今天是2014年4月21日 今天的我 是一个卑鄙无耻 下贱的人
- vs2010调试小技巧
- EF(Entity Framwork)
- HashMap Hashtable区别
- TopCoder----卖柠檬
- [codility]GenomicRangeQuery
- 查看Linux内核及系统版本
- Android listview与adapter用法
- 小松之LINUX驱动笔记(一)
- [codility]GenomicRangeQuery
- 软件更新源列表
- 黑马程序员-java基础学习笔记第二篇
- malloc动态分配与数组静态分配还有一个最重要的区别: