SHOI2001 化工廠裝箱員

2022-05-11 11:22:24 字數 1377 閱讀 3900

118號工廠是世界唯一秘密提煉鉲的化工廠,由於提煉鉲的難度非常高,技術不是十分完善,所以工廠生產的鉲成品可能會有3種不同的純度,a:100%,b:1%,c:0.01%,為了**方便,必須把不同純度的成品分開裝箱,裝箱員grant第1次順序從流水線上取10個成品(如果一共不足10個,則全部取出),以後每一次把手中某種純度的成品放進相應的箱子,然後再從流水線上順序取一些成品,使手中保持10個成品(如果把剩下的全部取出不足10個,則全部取出),如果所有的成品都裝進了箱子,那麼grant的任務就完成了。

由於裝箱是件非常累的事情,grant希望他能夠以最少的裝箱次數來完成他的任務,現在他請你編個程式幫助他。

輸入格式:

第1行為n(1<=n<=100),為成品的數量

以後n行,每行為乙個大寫字母a,b或c,表示成品的純度。

輸出格式:

僅一行,為grant需要的最少的裝箱次數。

輸入樣例#1:

11ab

cabc

abca

b

輸出樣例#1:

3

題解:

水題哈,明顯狀態可以定義為f[i][j][k][g]為前i個,10個中a,b,c數量分別為j,k,g個

然後轉移列舉清空哪一位再加上新產生的即可.

另外 這題還卡輸入....

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7

using

namespace

std;

8const

int n=105;9

int s[n],f[n][12][12][12],sum[n][3

];10

void

work()

1121

if(n<=10)25

intnxt,k1,k2,k3,tmp,inf;

26 memset(f,127/3,sizeof(f));inf=f[0][0][0][0

];27 f[10][sum[10][0]][sum[10][1]][sum[10][2]]=0;28

for(int i=10;i)

40if

(k)46

if(g)52}

53}54int ans=inf;

55for(int i=0;i<=10;i++)61}

62 printf("

%d\n

",ans);63}

64int

main()

65

洛谷 P2530 SHOI2001 化工廠裝箱員

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

化工廠裝箱員(TYVJ1625)

演算法 dp 分析 看了題解之後,發現這道題並不是那麼難做,之前一直沒有看出這道題究竟dp在哪,現在終於明白了。用f st,a,b,c 表示到st這個位置時,剩餘a a個 b b個 c c個 然後就進行dp,每次可以選擇放a或放b或放c。總共有三種轉移方式。其實這到題的dp不是特別的明顯,還是比較像...

數碼化工廠

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