博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 4122 Alice's mooncake shop (线段树)
阅读量:6321 次
发布时间:2019-06-22

本文共 1995 字,大约阅读时间需要 6 分钟。

题目大意:

一个月饼店每一个小时做出月饼的花费不一样。

储存起来要钱。最多存多久。问你把全部订单做完的最少花费。

思路分析:

ans = segma( num[]*(cost[] + (i-j)*s) )

整理一下会发现式子就是  

cost[]-j*s + i*s 

对于每个订单,我们把i拿出来分析

所以也就用cost - j*s 建树。

然后在储存期间找到最小的花费即可了。

#include 
#include
#include
#include
#include
#define lson num<<1,s,mid#define rson num<<1|1,mid+1,e#define maxn 2555#define maxm 100005#define inf 0x3f3f3f3fusing namespace std;typedef long long LL;int n,m;int days[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31}};string tab[] = {"","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};LL tre[maxm<<2];int getmonth(string x){ for(int i=1;i<=12;i++) if(x==tab[i])return i;}bool leap(int x){ if(((x%4==0) && x%100!=0) || x%400==0)return true; return false;}LL gethour(int month,int day,int year,int hour){ LL res=day-1; int is=leap(year); for(int i=1;i
>1; build(lson); build(rson);}void update(int num,int s,int e,int pos,LL val){ if(s==e) { tre[num]=val; return; } int mid=(s+e)>>1; if(pos<=mid)update(lson,pos,val); else update(rson,pos,val); tre[num]=min(tre[num<<1],tre[num<<1|1]);}LL query(int num,int s,int e,int l,int r){ if(l<=s && r>=e) { return tre[num]; } int mid=(s+e)>>1; if(r<=mid)return query(lson,l,r); else if(l>mid)return query(rson,l,r); else return min(query(lson,l,mid),query(rson,mid+1,r));}string tmp;LL num[maxn];LL cost[maxm];LL time[maxm];int main(){ while(cin>>n>>m) { if(n==0 && m==0)break; for(int i=1;i<=n;i++) { int d,y,h,Num; cin>>tmp; cin>>d>>y>>h>>Num; num[i]=Num; time[i]=gethour(getmonth(tmp),d,y,h); } LL S,T; build(1,1,m); cin>>T>>S; for(int i=1;i<=m;i++) { cin>>cost[i]; cost[i]-=i*S; update(1,1,m,i,cost[i]); } LL ans=0; for(int i=1;i<=n;i++) { if(time[i]>m)break; ans+=num[i]*(query(1,1,m,max(1LL,time[i]-T+1),time[i])+time[i]*S); } cout<
<

转载于:https://www.cnblogs.com/gavanwanggw/p/6690828.html

你可能感兴趣的文章
CHM 打开时提示 已取消到该网页的导航
查看>>
软件(代码)开源,协议声明
查看>>
java web开发人员经常使用标签
查看>>
修改linux的最大文件句柄数限制
查看>>
基于zepto的移动端日期+时间选择插件
查看>>
JDK5.0新特性系列---11.1线程 Callable和Future
查看>>
QTP的那些事--VBS函数大全
查看>>
爆牙齿的世界杯日记(小组次轮)
查看>>
09.移动先行之谁主沉浮----控件之轮流轰炸——高级控件
查看>>
Hibernate 缓存机制浅析
查看>>
Hadoop Hive概念学习系列之hive里的桶(十一)
查看>>
前端应聘要准备些什么样子的作品?
查看>>
ACM_几何] Metal Cutting(POJ1514)半平面割与全排暴力切割方案
查看>>
jquery easyui datagrid使用参考
查看>>
.NET开发之快捷键篇
查看>>
Python WMI获取Windows系统信息 监控系统
查看>>
VBS函数应用--getobject的使用获得Automation对象
查看>>
C语言:使用realloc函数对malloc或者calloc动态分配的内存大小进行扩展
查看>>
深入Xamarin.Forms
查看>>
UML--关系
查看>>