岳麓山上打水(Vijos1159)

2021-05-28 14:54:52 字數 1621 閱讀 8937

演算法:dp

分析:這道題曾經做過的,是usaco上的一道題,其實就是個搜尋+dp,也沒什麼新鮮的,但是不知道為什麼就是老超時,只優化了乙個地方,最後乙個點通過需要1.34s……

program vijos1159;

const

maxq=20000;

maxp=100;

var p,q,tot,depth:longint;

a,sel:array [0..maxp] of longint;

f:array [0..maxq] of longint;

procedure init;

var i:longint;

begin

tot:=0;

readln(q);

readln(p);

for i:=1 to p do readln(a[i]);

end;

procedure qsort(l,r:longint);

var i,j,m,t:longint;

begin

i:=l;

j:=r;

m:=sel[(l+r) shr 1];

repeat

while sel[i]m do dec(j);

if i<=j then

begin

t:=sel[i];

sel[i]:=sel[j];

sel[j]:=t;

inc(i);

dec(j);

end;

until i>j;

if i0 then

begin

write(tot,' ');

qsort(1,tot);

for i:=1 to tot do write(sel[i],' ');

writeln;

close(input);

close(output);

halt;

end;

end;

procedure dfs(dep,st:longint);

var i:longint;

begin

check;

if depth=dep then exit;

for i:=st to p do

begin

inc(tot);

sel[tot]:=a[i];

dfs(dep+1,st+1);

dec(tot);

end;

end;

procedure main;

var i:longint;

begin

for i:=1 to p do

begin

depth:=i;

dfs(0,1);

end;

end;

begin

assign(input,'vj1159.in'); reset(input);

assign(output,'vj1159.out'); rewrite(output);

init;

main;

close(input); close(output);

end.

題解 Vijos1159 岳麓山上打水

題面 迭代加深搜尋模板題。注意開始時要先對桶的容量從小到大排序。達到搜尋層數時使用完全揹包 text 即可。具體實現參考 include define itn int define gi gi using namespace std inline int gi while c 0 c 9 x x 1...

Vijos1159 岳麓山上打水 迭代加深

vijos1159岳麓山上打水 mzoj1005打水 今天算是學到了,到一些oj上提交程式需要選擇語言,不然會炸qaq 大概是我太菜了現在才知道 1 include2 using namespace std 3const int n 100 10 4 const int m 20000 10 5 i...

夜晚的岳麓山

來到長沙這麼多天,除開出差,大部分時間就在公司,姐家和酒店三點一線的生活,今天降溫,渴望的一場雨沒有到來,倒是刮了一天的風。晚上吃過晚飯本打算藉著涼爽的天氣徒步回酒店,正好緩解下緊張的工作情緒。姐姐打來 晚上一起去爬岳麓山,跟我徒步回家的想法不謀而合,相比之下爬山比壓馬路好多了,不僅有清新的空氣,還...