化工廠裝箱員(TYVJ1625)

2021-05-28 09:50:52 字數 1320 閱讀 5176

演算法:dp

分析:看了題解之後,發現這道題並不是那麼難做,之前一直沒有看出這道題究竟dp在哪,現在終於明白了。

用f[st,a,b,c]表示到st這個位置時,剩餘a(a個),b(b個),c(c個),然後就進行dp,每次可以選擇放a或放b或放c。總共有三種轉移方式。

其實這到題的dp不是特別的明顯,還是比較像記憶化搜尋。

program worker;

const

maxn=100;

var n:longint;

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

f:array [0..maxn,0..10,0..10,0..10] of longint;

b:array [0..maxn,0..10,0..10,0..10] of boolean;

procedure init;

var i:longint;

t:char;

begin

fillchar(b,sizeof(b),false);

fillchar(f,sizeof(f),100);

readln(n);

for i:=1 to n do

begin

readln(t);

a[i]:=ord(t)-64;

end;

end;

function min(x,y:longint):longint;

begin

if x=n then

begin

f[n,a1,b1,c1]:=ord(a1>0)+ord(b1>0)+ord(c1>0);

b[n,a1,b1,c1]:=true;

exit(f[n,a1,b1,c1]);

end;

if b[st,a1,b1,c1] then exit(f[st,a1,b1,c1])

else

begin

b[st,a1,b1,c1]:=true;

f[st,a1,b1,c1]:=min(f[st,a1,b1,c1],dfs(st,0,b1,c1)+1);

f[st,a1,b1,c1]:=min(f[st,a1,b1,c1],dfs(st,a1,0,c1)+1);

f[st,a1,b1,c1]:=min(f[st,a1,b1,c1],dfs(st,a1,b1,0)+1);

end;

exit(f[st,a1,b1,c1]);

end;

begin

init;

writeln(dfs(0,0,0,0));

end.

SHOI2001 化工廠裝箱員

118號工廠是世界唯一秘密提煉鉲的化工廠,由於提煉鉲的難度非常高,技術不是十分完善,所以工廠生產的鉲成品可能會有3種不同的純度,a 100 b 1 c 0.01 為了 方便,必須把不同純度的成品分開裝箱,裝箱員grant第1次順序從流水線上取10個成品 如果一共不足10個,則全部取出 以後每一次把手...

數碼化工廠

上個星期五出去開會,會議的主題是數碼化工廠平台的建設。由上海交通大學的乙個教授進行課題的組織,企業參加進行討論。由企業提出需求,教授的課題組進行總結。教授一開始,做了乙個關於數碼化工廠的最新研究現狀的報告。由於語速較快,也沒有聽得到其中的太多的精髓內容。但是,他介紹的數碼化工廠引入了雲計算 物聯網等...

洛谷 P2530 SHOI2001 化工廠裝箱員

題目描述 118號工廠是世界唯一秘密提煉鉲的化工廠,由於提煉鉲的難度非常高,技術不是十分完善,所以工廠生產的鉲成品可能會有3種不同的純度,a 100 b 1 c 0.01 為了 方便,必須把不同純度的成品分開裝箱,裝箱員grant第1次順序從流水線上取10個成品 如果一共不足10個,則全部取出 以後...