topcoder SRM 617 DIV2 SlimeXSlimonadeTycoon

OpenSoucre發表於2014-06-10

此題需要注意的兩個地方是

(1)在某天生產出來的Slimonades,必須在stale_limit天內必須賣完,否則超過stale_limit內拋棄(東西都有保質期)

(2)每天生產出來的Slimonades的數量在0到morning[i]之間,而不是morning[i]

故第i天賣的東西可能來自max(0,i-stale_limit+1)~i 之間任何一天的東西,假設j在這些天數之間,

則第j天生產的東西在第i天賣的數量為min(morning[j], customer[i]),故遍歷一遍即可

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class SlimeXSlimonadeTycoon{
public:
    int sell(vector<int> morning, vector<int> customers, int stale_limit){
        int res = 0 ;
        for(int i = 0 ; i < morning.size(); ++ i){
            for(int j = max(0,i-stale_limit+1); j<= i; ++ j){
                if(customers[i] > 0){
                    int t = min(customers[i],morning[j]);
                    res += t;
                    customers[i] -=t;
                    morning[j] -=t;
                }
            }
        }
        return res;
    }
};

 

 

相關文章