經過幾個月辛勤的工作,fj決定讓奶牛放假。假期可以在1…n天內任意選擇一段(需要連續),每一天都有乙個享受指數w。但是奶牛的要求非常苛刻,假期不能短於p天,否則奶牛不能得到足夠的休息;假期也不能超過q天,否則奶牛會玩的膩煩。fj想知道奶牛們能獲得的最大享受指數。
第一行:n,p,q.
第二行:n個數字,中間用乙個空格隔開。
乙個整數,奶牛們能獲得的最大享受指數。
水dp
f[i]表示為以第i天為假期的最後一天所奶牛們的最大享受指數。
先用sum陣列求出字首和
f[i]=sum[i]-min(i-q<=k<=i-p)
單調佇列維護單調遞增區間,每次隊首取出最小值。
var
a:array[0..1000001] of longint;
d,v:array[0..1000001] of longint;
f:array[0..1000001] of int64;
sum:array[0..1000001] of int64;
head,tail:longint;
i,j,k:longint;
n,m,nm:longint;
ans:longint;
begin
readln(n,nm,m);
for i:=1
to n do
read(a[i]);
sum[1]:=a[1];
for i:=2
to n do
sum[i]:=sum[i-1]+a[i];
fillchar(d,sizeof(d),0);
fillchar(v,sizeof(v),0);
head:=1;
tail:=0;
for i:=nm to n do
begin
while (v[head]and (head<=tail) do
head:=head+1;
while (sum[i-nm]and (head<=tail) do
tail:=tail-1;
tail:=tail+1;
v[tail]:=i-nm;
f[i]:=sum[i]-sum[v[head]];
end;
ans:=-maxlongint;
for i:=nm to n do
if ansthen ans:=f[i];
write(ans);
end.
codevs 2347 假期的宿舍
2009年省隊選拔賽浙江 時間限制 1 s 空間限制 256000 kb 題目等級 大師 master 學校放假了 有些同學回家了,而有些同學則有以前的好朋友來探訪,那麼住宿就是乙個問題。比如 a 和 b 都是學校的學生,a 要回家,而 c 來看b,c 與 a 不認識。我們假設每個人只能睡和自己直接...
NKOI 期末賽題D 假期關樓
p3696假期關樓 時間限制 2000ms 空間限制 65536kb 問題描述 暑假到了,大部分學生都回家了,只有少量競賽學生還在學校裡。學校打算逐步把教學樓都關閉。以減少運營成本。學校裡的n棟教學樓 編號1到n 通過m條雙向道路連線起來。每關閉了一棟樓,與該樓相連的所有道路同時都會被關閉。何老闆想...
高二小假期集訓 D5
剛調完了乙個非常噁心的題 可能是我寫的太噁心了 心累 先寫會部落格吧。今天上午該完了考試的三道題,感覺第二道真的是個好題 學長說是經常會遇到的一類題 完了完了 看了乙個小時std才看懂,寫了篇部落格。下午好頹啊,先是學長講課,講tarjan的正確性及一些細節證明 正確性不是顯然的嗎?搞懂了dfn和l...