codevs 1801 礦工配餐

2021-08-07 04:34:12 字數 1124 閱讀 4432

輸入描述 input description

輸入的第一行包含乙個整數 n ,表示食品車的數目。第二行包含乙個由 n 個字元組

成的字串,按照配送順序依次表示食品車配送的食品的型別。每個字元是以下三

個大寫字母之一:』m』 (表示肉類), 『f』 (表示魚類) 或 『b』 (表示麵包)。

輸出描述 output description

輸出乙個整數,表示最大的總產煤量。

樣例輸入 sample input

16 mmbmbbbbmmmmmbmb

樣例輸出 sample output

29資料範圍及提示 data size & hint

n ≤ 10000

dpdpd

#include 

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 10005;

int n,dp[maxn][5][5][5][5];

//dp[a][b][c][d][e] 第a輛,a最後兩次是bc,b最後兩次是de

/*當前是k 兩種可能 給a:dp[i][c][k][d][e]

給b:dp[i][b][c][e][k]

再加本次效益,看是否轉移

*/int num[maxn],ans = 0;

string s;

void change()

return;

}int calc(int a,int b,int c)

int main()

for(int a = 0; a <= 3; a ++)

for(int b = 0; b <= 3; b ++)

for(int c = 0; c <= 3; c ++)

for(int d = 0; d <= 3; d ++)

ans = max(ans,dp[n][a][b][c][d]);

printf("%d\n",ans);

return

0; }

BZOJ1806 礦工配餐

也是一道不錯的題目呢!bzoj上面的題的確很好呢,可惜我到現在才開始刷。不可以再把暴力 騙分盡量拿省一然後就投入文化課作為目標了,一是因為運氣不一定那麼好,二是我又重新發現了oi的美。如果這次可以拿到省一,我決定和之前那位大神一樣,停課準備省選,哪怕這很難。此題又涉及dp狀態設計的另乙個技巧,或者說...

bzoj1806 DP Miners 礦工配餐

description input 輸入的第一行包含乙個整數n 1 n 100 000 表示食品車的數目。第二行包含乙個由n個字元組成的字串,按照配送順序依次表示食品車配送的食品的型別。每個字元是以下三個大寫字母之一 m 表示肉類 f 表示魚類 或 b 表示麵包 output 輸出乙個整數,表示最大...

題解 codevs 1486 愚蠢的礦工

我們比較熟悉二叉樹,題目中給出的是一棵多叉樹,我們需要將這可二叉樹改造成二叉樹。二叉樹可以為這樣的 父親結點左邊儲存兒子,右邊儲存兄弟。有兩種改造方法 if tree x l 0 tree x l y else tree y r tree x l tree x l y 之後再考慮轉移,對於這個題來說...