题目很长,有点恶心,但实际上是个单调队列

没搞出来,题解 https://blog.csdn.net/lvshubao1314/article/details/46910271

#include<bits/stdc++.h>
#define ll long long
using namespace std; ll times[],num[],cost[],q[];//订单时间,订单数量,每个时间做蛋糕的代价,单调队列
ll n,m,T,S;//n个订单,m个做蛋糕时间(连续的),蛋糕寿命,每小时保存代价
map<string,int>mp;
int sum[]; void init(){
mp["Jan"]=,mp["Feb"]=,mp["Mar"]=;
mp["Apr"]=,mp["Mar"]=,mp["Jun"]=;
mp["Jul"]=,mp["Aug"]=,mp["Sep"]=;
mp["Oct"]=,mp["Nov"]=,mp["Dec"]=;
sum[]=,sum[]=,sum[]=sum[]+,sum[]=sum[]+,sum[]=sum[]+,sum[]=sum[]+,sum[]=sum[]+;
sum[]=sum[]+,sum[]=sum[]+,sum[]=sum[]+,sum[]=sum[]+,sum[]=sum[]+;
}
int get(int y,int m,int d,int t)
{
int ans=;
for(int i=; i<y; i++)
{
if((i%==&&i%!=)||i%==)
ans+=;
else
ans+=;
}
if((y%==&&y%!=)||y%==)
{
ans+=sum[m-];
if(m->=)ans++;
}
else
{
ans+=sum[m-];
}
ans+=(d-);
return ans*+t;
} int main(){
init();
while(scanf("%lld%lld",&n,&m),n){
for(int i=;i<n;i++){
int year,day,t;
char mon[];
scanf("%s%d%d%d%lld",mon,&day,&year,&t,&num[i]);
times[i]=get(year,mp[mon],day,t);
}
scanf("%lld%lld",&T,&S);
int tail=,head=,k=;
ll cnt=;
for(int i=;i<m;i++){
scanf("%lld",&cost[i]);
while(head<tail && cost[q[tail-]]+S*(i-q[tail-])>=cost[i])tail--;//单调队列不是按照cost排序,而是按照制作成本+保存成本从小到大排序
q[tail++]=i;
while(i==times[k]){
while(head<tail- && i-q[head]>T) head++;
cnt+=num[k]*(cost[q[head]]+S*(i-q[head]));
k++;
}
}
printf("%lld\n",cnt);
}
}

hdu4122的更多相关文章

  1. hdu4122(单调队列)

    处理题目中给的日期,然后用单调队列维护 Alice's mooncake shop Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32 ...

  2. hdu4122 制作月饼完成订单的最小花费

    题意:       有一个加工厂加工月饼的,这个工厂一共开业m小时,2000年1月1日0点是开业的第一个小时,每个小时加工月饼的价钱也不一样,然后每个月饼的保质期都是t天,因为要放在冰箱里保存,所以在 ...

随机推荐

  1. kafka关于修改副本数和分区的数的案例实战(也可用作leader节点均衡案例)

    kafka关于修改副本数和分区的数的案例实战(也可用作leader节点均衡案例) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关于topic分区数的修改 1>.创建1分 ...

  2. jenkins多个slave遇到的坑

    jenkins配置如下: 在Jenkins上添加了两个节点(Slave Node),且为这两个节点设置了一个相同的标签"windows".创建了一个新Job – "tes ...

  3. bzoj千题计划307:bzoj5248: [2018多省省队联测]一双木棋

    https://www.lydsy.com/JudgeOnline/problem.php?id=5248 先手希望先手得分减后手得分最大,后手希望先手得分减后手得分最小 棋盘的局面一定是阶梯状,且从 ...

  4. 使用ResourceBundle读取配置文件

    在Java语言中,使用一种以.properties为扩展名的文本文件作为资源文件,该类型的文件的内容格式为类似: 12 #注释语句 some_key=some_value 形式.以#开头的行作为注释行 ...

  5. apache - http

    apahce 添加模块编译 httpd   # so模块用来提供DSO支持的apache核心模块 # 如果编译中包含任何DSO模块,则mod_so会被自动包含进核心. # 如果希望核心能够装载DSO, ...

  6. NOIP2018 前流水账

    不务正业系列 学习yyb,zsy,ljq,mona等大佬而写的 \(qwq\) 不知道前言写些什么 \(qwq\) 尽量日更好吧 \(qwq\) \(upd:\)日更是不可能日更的,这辈子不可能的 \ ...

  7. Maxwell入门

    1 下载tar包 Download binary distro: https://github.com/zendesk/maxwell/releases/download/v1.19.4/maxwel ...

  8. Java 集合和映射表

    集合 可以使用集合的三个具体类HashSet.LinkedHashSet.TreeSet来创建集合 HashSet类 负载系数 当元素个数超过了容量与负载系数的乘积,容量就会自动翻倍 HashSet类 ...

  9. 复制vmware主机修改网卡

    https://blog.csdn.net/gui951753/article/details/79491092

  10. 深层揭密extern "C"

    一. extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的:其次,被它修饰的目标是“C”的.让我们来详细解读这两重含义. (1) 被ext ...