Alice's mooncake shop【HDU 4122】【單調佇列】
阿新 • • 發佈:2019-01-10
題目連結
這道題還稍微有了點坑點,就是一開始過了的時候沒想到的,就是在一開始處理的時候,我們用到單調佇列,但是單調佇列一開始,我用陣列模擬,所以先放進去了區間長度-1個元素,但是,這個時候,就會有問題,就是,如果期限剛好在區間內的話,我們就會少去這個答案,所以不行!我們一邊插入的同時,還需要一邊考慮,這樣才能達到完整的解。
對了,附上一隻小貓咪——挺可愛的說:
/*
* UM.
* [email protected]@1 [email protected]
* [email protected]@@[email protected] [email protected]@[email protected]
* :@[email protected],[email protected]@O , [email protected]@[email protected]@Br
* @[email protected] [email protected]@BS [email protected]@@@[email protected]
* [email protected]@B [email protected] @i [email protected]@@[email protected]@
* ,[email protected]: [email protected]@@Z [email protected]@[email protected]
* [email protected] :@[email protected] [email protected]@[email protected]@.
* :@[email protected] @@@B: [email protected]@[email protected]
* @[email protected] [email protected]@B. ..::ir7vvYUuU777r::. [email protected]@[email protected]@S
* [email protected], [email protected] :[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@[email protected]@[email protected]@[email protected]
* [email protected]@ @[email protected]@[email protected]@[email protected]@@[email protected]@[email protected]@[email protected]@[email protected]@@
* @[email protected] [email protected]@@@MSur:. [email protected]@@@
* @@@. [email protected]@@B
* [email protected]@ [email protected]@[email protected]
* [email protected] @@@[email protected]@B
* @@BS [email protected]@@[email protected]@
* @@@7 [email protected]@[email protected]
* [email protected] [email protected]@[email protected]@7
* [email protected]@: [email protected]@[email protected]@M
* [email protected]@, [email protected]@@[email protected]@[email protected]@[email protected]@
* [email protected] [email protected]@[email protected]@[email protected]@@@@[email protected]@[email protected]: @@@B
* [email protected]: [email protected]@[email protected]@[email protected]: @[email protected]
* [email protected] ,v. @[email protected]
* [email protected], Y7 @[email protected] [email protected]@
* :[email protected]@@B2: @@B7 @[email protected] [email protected]@[email protected]: [email protected]
* [email protected]@@[email protected]@[email protected] [email protected]@B [email protected]@[email protected]@Ou: [email protected]
* :[email protected]@[email protected]@2. :7::::[email protected]@[email protected] :[email protected]@[email protected]@[email protected]@G. @[email protected]
* [email protected]@@[email protected]@ :@[email protected]@@@[email protected]@@1 [email protected]@[email protected]@@5 [email protected]@2
* [email protected] ,@B1 L0EZZG0F7: .:, [email protected]@M7
* [email protected]@ ,[email protected]@[email protected]@B
* @[email protected] :@[email protected]@@r :@@@@[email protected]:,,
* [email protected] :2ZS; :@[email protected]@[email protected] [email protected]@[email protected]
* @[email protected] @@@[email protected]@ [email protected]@[email protected] @[email protected]
* [email protected] [email protected]@[email protected] [email protected]@[email protected] ,[email protected]
* @[email protected] @[email protected]@@@i rL7. [email protected]
* [email protected]: [email protected]@M. [email protected]@.
* .;[email protected]@@[email protected]@[email protected]@. . @[email protected]
*@@@[email protected]@[email protected]@@@[email protected] :[email protected]@[email protected],
*[email protected] ,@@B [email protected]@[email protected]@[email protected]
* @@@U [email protected]@[email protected]@i
* [email protected]@ :[email protected] [email protected]@
* [email protected]@ [email protected]@k 2i
* [email protected] .7jXEGqF7: [email protected]@L
* [email protected] [email protected]@[email protected]@[email protected]@. :@[email protected]:
* [email protected]@ @@MYr::[email protected] [email protected]@G
* [email protected]@@S ,[email protected]@,
* [email protected]@@BF [email protected]@Br
* [email protected]@[email protected] ,[email protected]@@B8,
* [email protected]@[email protected], :[email protected]@[email protected]
* [email protected]@[email protected]@P7, [email protected]@[email protected]@[email protected]@[email protected]
* ,[email protected]@[email protected]@@@BOP2L7i:,. ..,:[email protected]@[email protected]@@@[email protected]@[email protected];[email protected]@
* @[email protected]@[email protected]@@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@[email protected]@[email protected]@@[email protected]@[email protected]@BM0SJ7i::::i:,[email protected]@
* [email protected] ::i;[email protected]@[email protected]@[email protected]@[email protected]@@@B1UFuj77ii:::::::iir;r;[email protected]
* @[email protected]:i:i:i::::::::::[email protected]@BMYi:i;[email protected]@N:.::i:iirir;r;rii::::[email protected]@
* [email protected]@X::,::::iirir;riri:[email protected]@1 ,@[email protected]:;;r;rii:i::::[email protected]@@@@B
* @@@[email protected]:::::::[email protected]@@i ..,.. @[email protected]@,,:::::[email protected]@[email protected]@[email protected]@:
* [email protected]@@@[email protected]@[email protected]@[email protected] .,,:,, :. @[email protected]@[email protected]@[email protected]@@@BS: @@B1
* [email protected]@ [email protected]@[email protected]@[email protected]@[email protected] .,:,,[email protected]@[email protected] [email protected]@[email protected]@[email protected]@BM57. [email protected]
* [email protected]@: .,[email protected]@u ..,.. [email protected]@@@[email protected], ,@[email protected]
* @@@8 [email protected]@: . :[email protected]@@ [email protected]@2
* [email protected]@@@ [email protected]@u [email protected]@B. [email protected]
* ,@[email protected] [email protected]@BOv:.:[email protected]@M @[email protected]
* vNi [email protected]@[email protected]@[email protected]@BM: [email protected]
* 758BMqJ,
*
* . YO. vq :G Z:
* [email protected]@Br @@r rBE @B [email protected]@@@@[email protected] i::::.OB1.:::[email protected]::::i @[email protected]@U:@@[email protected]@BPEBu
* [email protected]@[email protected] [email protected] [email protected] BM [email protected]@Z [email protected]@[email protected]@@@[email protected]@[email protected]@[email protected]@@[email protected] [email protected]@1 BX :@k [email protected]:
* iB iBi [email protected] [email protected]@BGMZZ @@F ,B Pi [email protected] Bq @i [email protected] [email protected]
* [email protected]@Z7LLri;72. [email protected]@@ @BX @@@[email protected]@@@@@[email protected]@@[email protected]@B [email protected] @F Bi @q @[email protected] @B
* [email protected]@[email protected]@@[email protected]@[email protected]@, [email protected] @@ .Bk .:u; [email protected]: Zv [email protected] Bk @,;@ ,BY @B [email protected]
* [email protected] @G 5. ,@v BZ :::,[email protected] .::i, @B [email protected] [email protected] [email protected] @F B:[email protected] [email protected] @M @B
* 7B: ,vO, @@ [email protected]: @B [email protected]:[email protected]@[email protected]@@[email protected]@BM @@. B: [email protected] [email protected] BS @i [email protected] B. @O [email protected]
* ,[email protected]@[email protected] [email protected] @BB [email protected] @B @S : [email protected] .. 7B @F @7 B7 @ @B @B
* [email protected]@UOBr @[email protected] [email protected] .BZ [email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@, [email protected] BF @i @G [email protected]@B [email protected]
* [email protected], [email protected] ;r @@@. [email protected] [email protected] [email protected]@q BP:[email protected] @u,. @B
* LBi [email protected]@ @@ @B:[email protected] BM [email protected] rB [email protected] [email protected] Pi @XZ8r . [email protected]
* . [email protected] [email protected] ,[email protected], @B [email protected] N, [email protected] ,[email protected] [email protected], [email protected]@B1r Br @@
* [email protected]@B ,i [email protected]@B, [email protected]: @[email protected]@F [email protected]: [email protected] :OBZ [email protected] [email protected]@B:
* .ll rB. :
*/
#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define INF 0x3f3f3f3f
#define SonG_y main
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int maxN = 2507;
const int dir[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int N, M, tot;
string month; int day, year, hour; ll need[maxN]; //月、日、年、小時、需求
int T, S;
int real_Time[maxN];
int get_month(string ss)
{
if(ss == "Jan") return 1;
else if(ss == "Feb") return 2;
else if(ss == "Mar") return 3;
else if(ss == "Apr") return 4;
else if(ss == "May") return 5;
else if(ss == "Jun") return 6;
else if(ss == "Jul") return 7;
else if(ss == "Aug") return 8;
else if(ss == "Sep") return 9;
else if(ss == "Oct") return 10;
else if(ss == "Nov") return 11;
else return 12;
}
inline bool lucky_year(int NEW_year) { return (NEW_year%4 == 0 && NEW_year%100 != 0) || (NEW_year%400 == 0); }
inline void get_TIME(int i)
{
int tmp = hour;
tmp += (day - 1) * 24;
int yue = get_month(month);
for(int i=1; i<yue; i++)
{
if(i == 2 && lucky_year(year)) tmp += 29 * 24;
else tmp += dir[i] * 24;
}
for(int i=2000; i<year; i++)
{
if(lucky_year(i)) tmp += 366 * 24;
else tmp += 365 * 24;
}
real_Time[i] = tmp;
}
const int maxM = 2e5 + 7;
ll order[maxM];
ll cost[maxM], minn[maxM];
ll ans = 0;
struct node
{
ll val;
int id;
node(ll a=INF, int b=0):val(a), id(b) {}
}p[maxM];
inline void get_MInn(int nn, int kk) //總長、區間長度
{
int head = 1, tail = 0;
for(int i=0; i<kk-1; i++)
{
while(head<=tail && p[tail].val>=cost[i]) tail--;
p[++tail] = node(cost[i], i);
if(order[i]) ans += order[i] * ( p[head].val - (tot - i) * S );
}
for(int i=kk-1; i<=nn; i++)
{
while(head<=tail && p[tail].val>=cost[i]) tail--;
p[++tail] = node(cost[i], i);
while(p[head].id <= i - kk + 1) head++;
minn[i - kk + 1] = p[head].val;
if(order[i]) ans += order[i] * ( minn[i - kk + 1] - (tot - i) * S );
}
}
int SonG_y()
{
while(scanf("%d%d", &N, &M) && (N | M))
{
memset(order, 0, sizeof(order));
for(int i=1; i<=N; i++)
{
cin>>month;
scanf("%d%d%d%lld", &day, &year, &hour, &need[i]);
get_TIME(i);
order[real_Time[i]] += need[i];
}
scanf("%d%d", &T, &S);
tot = T + M - 1; //這一天是最後的期限
for(int i=0; i<M; i++)
{
scanf("%lld", &cost[i]);
cost[i] += S * (tot - i);
}
for(int i=M; i<=tot; i++) cost[i] = INF;
ans = 0;
get_MInn(tot, T+1);
printf("%lld\n", ans);
}
return 0;
}
/*
1 10
Jan 1 2000 2 10
5 2
20
20
20
10
10
8
7
9
5
10
ans:240
*/
/*
* UM.
* [email protected]@1 [email protected]
* [email protected]@@[email protected] [email protected]@[email protected]
* :@[email protected],[email protected]@O ,[email protected]@[email protected]@Br
* @[email protected] [email protected]@BS [email protected]@@@[email protected]
* [email protected]@B [email protected]@i [email protected]@@[email protected]@
* ,[email protected]: [email protected]@@Z [email protected]@[email protected]
* [email protected] :@[email protected] [email protected]@[email protected]@.
* :@[email protected] @@@B: [email protected]@[email protected]
* @[email protected] [email protected]@B. ..::ir7vvYUuU777r::. [email protected]@[email protected]@S
* [email protected], [email protected] :[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@[email protected]@[email protected]@[email protected]
* [email protected]@ @[email protected]@[email protected]@[email protected]@@[email protected]@[email protected]@[email protected]@[email protected]@@
* @[email protected] [email protected]@@@MSur:. [email protected]@@@
* @@@. [email protected]@@B
* [email protected]@ [email protected]@[email protected]
* [email protected] @@@[email protected]@B
* @@BS [email protected]@@[email protected]@
* @@@7 [email protected]@[email protected]
* [email protected] [email protected]@[email protected]@7
* [email protected]@: [email protected]@[email protected]@M
* [email protected]@, [email protected]@@[email protected]@[email protected]@[email protected]@
* [email protected] [email protected]@[email protected]@[email protected]@@@@[email protected]@[email protected]: @@@B
* [email protected]: [email protected]@[email protected]@[email protected]: @[email protected]
* [email protected] ,v. @[email protected]
* [email protected], Y7 @[email protected]