hdu4122
题目很长,有点恶心,但实际上是个单调队列
没搞出来,题解 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的更多相关文章
- hdu4122(单调队列)
处理题目中给的日期,然后用单调队列维护 Alice's mooncake shop Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32 ...
- hdu4122 制作月饼完成订单的最小花费
题意: 有一个加工厂加工月饼的,这个工厂一共开业m小时,2000年1月1日0点是开业的第一个小时,每个小时加工月饼的价钱也不一样,然后每个月饼的保质期都是t天,因为要放在冰箱里保存,所以在 ...
随机推荐
- sed命令使用介绍(转载)
sed命令介绍 (转自:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html) 简介 sed 是一种在线编辑器,它一次处理一 ...
- MySQL聚合函数、控制流程函数
[正文] 一.navicat的引入:(第三方可视化的客户端,方便MySQL数据库的管理和维护) NavicatTM是一套快速.可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设 ...
- Code::Blocks代码自动提示设置及常用快捷键
Code::Blocks代码自动提示设置及常用快捷键(适用windows和linux) 1)以下需要设置的地方均在Settings->Editor...弹出的对话框中. 2)不少命令都可针对当前 ...
- gcc和gdb使用笔记
gcc: http://wiki.ubuntu.org.cn/Gcchowto gdb: http://wiki.ubuntu.org.cn/%E7%94%A8GDB%E8%B0%83%E8%AF%9 ...
- DNS缓存欺骗攻击
1.受影响的无线网络设备 一些D-link.TP-Link.Belkin.Linksys及IPTime等品牌无线路由器存在安全隐患. 2.漏洞描述 攻击者向DNS服务器注入非法网络域名地址,如果服务器 ...
- Nginx GZIP 压缩
[ HTTP 开启gzip ] gzip on; // 开启 nginx在线实时压缩数据流: gzip_min_length 1k; // 允许压缩的页面最小字节 gzip_buffers 32k; ...
- Java SE关键字-static
一. static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员 ...
- AAA游戏中雪的实现
现在越来越多的AAA游戏中都实现了逼真的雪的效果,比如战神4.地平线:黎明时分.荒野大镖客:救赎2.古墓丽影:崛起等都实现了不错的雪地效果.今天我们就来探究一下他们的实现方式.现在主流的实现方式都是通 ...
- 在虚拟机安装windows xp时所需要的序列号
最新的windows xp sp3序列号 xp序列号 最新的windows xp sp3序列号(绝对可通过正版验证) MRX3F-47B9T-2487J-KWKMF-RPWBY(工行版) 可用(强推 ...
- 发送http请求的方法
在http/1.1 协议中,定义了8种发送http请求的方法 get post options head put delete trace connect patch. 根据http协议的设计初衷,不 ...