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

没搞出来,题解 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. Java_myBatis入门写法

    一.整体步骤 1.读取全局配置文件“SqlMapConfig.xml” 2.用SqlSessionFactoryBuilder来创建一个SqlSessionFactory 3.用创建好的SqlSess ...

  2. P4315 月下“毛景树”

    P4315 月下"毛景树" 题目描述 毛毛虫经过及时的变形,最终逃过的一劫,离开了菜妈的菜园. 毛毛虫经过千山万水,历尽千辛万苦,最后来到了小小的绍兴一中的校园里. 爬啊爬~爬啊爬 ...

  3. Python生成唯一id的方法

    1. uuid import uuid def create_uid(): return str(uuid.uuid1()) if __name__ == '__main__': print(type ...

  4. VMware虚拟机Mac OS X无法调整扩展硬盘大小的解决方案(转)

    使用VMware虚拟机搭建的MacOSX,在10.10以上可能会出现无法扩充磁盘大小的问题. 因为很多朋友在初次安装MacOSX的时候都默认选择40G的磁盘大小,结果用了没两天之后就发现磁盘不够用了. ...

  5. 10 SpringBoot全面接管SpringMVC

    Spring Boot官方文档描述 If you want to keep Spring Boot MVC features and you want to add additional MVC co ...

  6. offset[Parent/Width/Height/Top/Left] 、 client[Width/Height/Top/Left] 、 Element.getBoundingClientRect()

    开篇提示:以下内容都经个人测试,参考API文档总结,但还是不能保证完全正确,若有错误,还请留言指出___________________________________________________ ...

  7. VS2013中修改MFC对话框左上角和exe图标

    一.开发环境 1.VS2013: 2.C++ / MFC: 二.更改步骤 1)创建一个新工程,可以什么都不加.打开“资源视图”, 右键点击项目名称,选择“添加资源”,导入“Icon”资源文件(事先准备 ...

  8. jQuery - 字符串与json对象之间的转换

    将字符串转换为json 在js中,我们是这样写的 var _data = eval('(' + data + ')'); 原理:eval() 函数可计算某个字符串,并执行其中的的 JavaScript ...

  9. for XX in XX结构

    这是一个循环!! in 后面可跟range,enumerate,序列等 for i in [(1,2),(2,3),("gege",5)]: print (i) 执行结果: (1, ...

  10. 复习python

    1当命令行键入python a.py的方式运行python程序时候,a.py不需要执行权,当已./a.py运行时,需要执行权 2.与c语言不同的地方 i = 3 print (i)#合法 #在pyth ...