USACO 2 1 健康的好斯坦奶牛 DFS

2021-09-03 00:00:52 字數 2442 閱讀 6085

description

農民john以擁有世界上最健康的奶牛為驕傲。他知道每種飼料中所包含的的牛所需的最低的維他命量是多少。請你幫助農夫餵養他的牛,以保持他們的健康,使餵給牛的飼料的種數最少。

給出牛所需的最低的維他命,輸出餵給牛需要哪些種類的飼料,且所需的種類數最少。

input

第1行:乙個整數v(1<=v<=25),表示需要的維他命的種類數。

第2行:v個整數(1<=每個數<=1000),表示牛每天需要的維他命的最小量。

第3行:乙個整數g(1<=g<=15),表示可用來喂牛的飼料的數量。下面g行,第i行表示編號為i飼料包含的各種維他命的量的多少。

output

輸出檔案只有一行,包括:

• 牛必需的最小的飼料種數p

• 後面有p個數,表示所選擇的飼料編號(按從小到大排列)。

末尾有空行

題解就乙個dfs,水了。

executing…

test 1: test ok [0.000 secs, 340 kb]

test 2: test ok [0.000 secs, 340 kb]

test 3: test ok [0.000 secs, 340 kb]

test 4: test ok [0.000 secs, 340 kb]

test 5: test ok [0.000 secs, 340 kb]

test 6: test ok [0.000 secs, 340 kb]

test 7: test ok [0.000 secs, 340 kb]

test 8: test ok [0.000 secs, 340 kb]

test 9: test ok [0.011 secs, 340 kb]

test 10: test ok [0.011 secs, 340 kb]

all tests ok.

**

var m,n,l,tot,min:longint;

a:array [0..31]of longint;

ans,tmp:array [0..20]of longint;

f:array [0..20,0..31] of longint;

procedure

init;

var i,j:longint;

begin

readln(n);

for i:=1

to n do

read(a[i]);

readln(m);

for i:=1

to m do

for j:=1

to n do

read(f[i,j]);

tot:=0;

min:=maxlongint;

end;

function

check:boolean;

var i:longint;

begin

for i:=1

to n do

if a[i]>0

then

exit(false);

exit(true);

end;

procedure

dfs(k:longint);

var i:longint;

begin

if (check) and (totthen

begin

ans:=tmp;

min:=tot;

end;

if k>m then

exit;

inc(tot);

tmp[tot]:=k;

for i:=1

to n do

a[i]:=a[i]-f[k,i];

dfs(k+1);

dec(tot);

for i:=1

to n do

a[i]:=a[i]+f[k,i];

dfs(k+1);

end;

procedure

print;

var i:longint;

begin

write(min,' ');

for i:=1

to min-1

dowrite(ans[i],' ');

writeln(ans[min]);

end;

begin

assign(input,'holstein.in');

assign(output,'holstein.out');

reset(input);

rewrite(output);

init;

dfs(1);

print;

close(input);

close(output);

end.

USACO2 1 解題報告

usaco2.1主要內容是圖論。其中有幾道題是要用深搜做的。而另外幾道題則是利用模擬的方法來完成簡單圖論。總體來說難度還是比較小的,算是最基礎的演算法吧。uasco 題解思路 可以列舉分子和分母,然後判斷他們的最小公約數是不是1 1 其實就是判斷是否互質 如果是的話就將這個分數加入到結構體裡面,儲存...

USACO 2 1 順序的分數

description 輸入乙個自然數n 請寫乙個程式來增序輸出分母小於等於n的最簡真分數 input 單獨的一行 乙個自然數n 1.160 output 每個分數單獨佔一行 最後一行有回車 sample input 5 sample output 0 1 1 5 1 4 1 3 2 5 1 2 3...

USACO 2 1 健康的好斯坦奶牛 DFS

description 農民john以擁有世界上最健康的奶牛為驕傲。他知道每種飼料中所包含的的牛所需的最低的維他命量是多少。請你幫助農夫餵養他的牛,以保持他們的健康,使餵給牛的飼料的種數最少。給出牛所需的最低的維他命,輸出餵給牛需要哪些種類的飼料,且所需的種類數最少。input 第1行 乙個整數v ...