HDU 4122--Alice's mooncake shop(单调队列)

来源:http://acm.hdu.edu.cn/showproblem.php?pid=4122

题意:有n个订单,每个订单会告诉你那天那个时候会要多少个月饼,你要给他,订单按时间顺序给。题目会告诉你一个月饼只能多保存t小时,每多保存一小时要s的价值。以及前m小时的生产信息  ai (1<=i<=m) 表示 第i小时生产一个月饼要的价值。要你输出完成所有的订单的最小价值,订单的时间不会超过m的时间 。

 

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;

struct node
{
    int l,time;
} data[2505],qu[100005];
int month(string str)
{
    if(str=="Jan") return 1;
    if(str=="Feb") return 2;
    if(str=="Mar") return 3;
    if(str=="Apr") return 4;
    if(str=="May") return 5;
    if(str=="Jun") return 6;
    if(str=="Jul") return 7;
    if(str=="Aug") return 8;
    if(str=="Sep") return 9;
    if(str=="Oct") return 10;
    if(str=="Nov") return 11;
    if(str=="Dec") return 12;
}
int monthn[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
int okyear(int year)
{
    return year%400==0||year%100&&year%4==0;
}
int how(int year,int monthnth,int date,int hour)
{
    int ans=0;
    for(int i=2000; i=a)
                tail--;
            qu[tail].l=a,qu[tail++].time=i;
            while(start


 

你可能感兴趣的:(数据结构)