题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4122

代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
#include<string>
using namespace std; const int maxn = ; struct Node
{
int id,val;
}; int order[];
long long R[];
int S,T,N,M; struct Myqueue
{
Node Q[maxn];
int head,tail; void init()
{
head = tail = ;
} void push(int id,int val)
{
while(head < tail && Q[tail-].val+S*(id-Q[tail-].id) >= val)
tail--;
Q[tail].val = val;
Q[tail++].id = id;
} void pop(int id)
{
while(head < tail && Q[head].id < id - T) //单调区间的最小值。
head++;
} Node getfront()
{
return Q[head];
}
}solver; map<string,int> mymap; void init()
{
mymap["Jan"] = ; mymap["Feb"] = ; mymap["Mar"] = ;
mymap["Apr"] = ; mymap["May"] = ; mymap["Jun"] = ;
mymap["Jul"] = ; mymap["Aug"] = ; mymap["Sep"] = ;
mymap["Oct"] = ; mymap["Nov"] = ; mymap["Dec"] = ;
} int mou[] = {,,,,,,,,,,,,};
void GetOrder()
{
string s;
int date,year,H; for(int i=; i<=N; i++)
{
cin>>s;
scanf("%d %d %d %I64d",&date,&year,&H,&R[i]);
int mouth = mymap[s];
year -= ;
order[i] = (*+)*(year/);
year = year%;
if(year == )
{
for(int j=; j<mouth; j++)
{
order[i] += mou[j];
if(j == ) order[i] += ;
}
}
else
{
order[i] += + (year-)*;
for(int j=; j<mouth; j++)
order[i] += mou[j];
}
order[i] += date - ;
order[i] = order[i]* + H + ;
}
}
int main()
{
//freopen("E:\\acm\\input.txt","r",stdin);
init();
while(cin>>N>>M && N+M)
{
GetOrder(); scanf("%d %d",&T,&S);
solver.init(); int cnt = ;
long long ans = ;
for(int i=; i<=M; i++)
{
int cost;
scanf("%d",&cost); solver.push(i,cost);
solver.pop(i); //先去掉过期的 Node cur = solver.getfront();
while(order[cnt] == i && cnt <= N) //cnt的上限,和while循环,考虑了,为啥不加。
{
ans += (cur.val + (i-cur.id)*S ) * R[cnt]; //乘法溢出问题
cnt ++;
}
}
printf("%I64d\n",ans);
}
}

hdu 单调队列的更多相关文章

  1. hdu 3401 单调队列优化DP

    Trade Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  2. 【HDU 3401 Trade】 单调队列优化dp

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3401 题目大意:现在要你去炒股,给你每天的开盘价值,每股买入价值为ap,卖出价值为bp,每天最多买as ...

  3. HDU 3401 Trade dp+单调队列优化

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3401 Trade Time Limit: 2000/1000 MS (Java/Others)Mem ...

  4. HDU 4122 Alice's mooncake shop 单调队列优化dp

    Alice's mooncake shop Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem ...

  5. HDU 3401 Trade(单调队列优化)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3401 题意:炒股.第i天买入一股的价钱api,卖出一股的价钱bpi,最多买入asi股,最多卖出bsi股 ...

  6. HDU 4122 Alice's mooncake shop (单调队列/线段树)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4122 题意:好难读懂,读懂了也好难描述,亲们就自己凑合看看题意把 题解:开始计算每个日期到2000/1/ ...

  7. Hdu 3410 【单调队列】.cpp

    题意: 给出一个数组,问你对于第i个数,从最后一个比它大的数到它之间比它小的数中最大的那个数的下标,以及它右边到第一个比它大的数中比它小的数中最大的那一个数的下标<下标从1开始>. eg: ...

  8. hdu 4122 Alice's mooncake shop(单调队列)

    题目链接:hdu 4122 Alice's mooncake shop 题意: 有n个订单和可以在m小时内制作月饼 接下来是n个订单的信息:需要在mon月,d日,year年,h小时交付订单r个月饼 接 ...

  9. hdu 5945 Fxx and game(单调队列优化DP)

    题目链接:hdu 5945 Fxx and game 题意: 让你从x走到1的位置,问你最小的步数,给你两种走的方式,1.如果k整除x,那么你可以从x走一步到k.2.你可以从x走到j,j+t<= ...

随机推荐

  1. 判断JS对象是否拥有某属性的方法举例

    判断JS对象是否拥有某属性 JS是否拥有某属性的判断方法,这里提供两种方式,供大家参考. 1.in 运算符 var obj = {name:'jack'}; alert('name' in obj); ...

  2. 迷你版 smarty --模板引擎和解析

    http://blog.ipodmp.com/archives/php-write-a-mini-smarty-template-engine/ 迷你版Smarty模板引擎目录结构如下: ① 要开发一 ...

  3. wcf通道Channel

    正文 客户端与服务进行交互的过程是通过通道进行交互的.客户端通过调用代理类执行相应的方法,通过通道编码,调用上下文,传输客户端的事务,管理可靠会话,对消息正文的加密,最后要执行的通道是传输通道就像我们 ...

  4. 固定滚动外层div的css

    background-color: #2a3138; position: fixed; bottom: 0; left: 0; width: 100%; height: 57px; overflow: ...

  5. [转]left join,right join,inner join区别

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只 ...

  6. Config IIS server6.0-- HTTP 错误 500.21 - Internal Server Error 解决方案

    HTTP 错误 500.21 - Internal Server Error 解决方案         不久前重新安装了Windows7,在安装了VS2010 开发平台之后,将网站发布到IIS,访问发 ...

  7. c#反射机制判断同一个类的两个实例的值是否完全一样

    ; i < properties1.Length; i++)            {                string s = properties1[i].DeclaringTyp ...

  8. 快速生成json实体类

    读取一个json文件,并与实体相对应: static void Main(string[] args) { string json = ""; FileStream fs = ne ...

  9. iOS -一些常用的方法

    1.获取本地的语言 + (NSString *)getLocalLanguage { NSString *language = [[[NSUserDefaults standardUserDefaul ...

  10. 降维(二)----Laplacian Eigenmaps

    降维(二)----Laplacian Eigenmaps 降维系列: 降维(一)----说说主成分分析(PCA)的源头 降维(二)----Laplacian Eigenmaps ----------- ...