輸入描述 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 之後再考慮轉移,對於這個題來說...