2020牛客暑期多校訓練營(第三場)
阿新 • • 發佈:2020-07-18
A.Clam and Fish
題意:1.遊戲有n階段,從1到n編號
2.4種類型的階段(0~3)
0:0魚 0蛤
1:0魚 1蛤
2:1魚 0蛤
3:1魚 1蛤
每個階段,都可以執行如下4個動作中的一個:
1.有一蛤,可以製作成一包魚餌,接下來階段用來抓魚
2.有一魚,抓這魚不需要魚餌,魚餌數不變
3.至少有一魚餌,用魚餌抓魚,即使這個階段沒魚,魚餌數減1
4.什麼都不幹
分析:2和3階段有魚就抓魚,直接累加到答案裡面,然後每次遇到一個1,就製作一包魚餌,然後在接下來遇到0的時候,判斷有沒有魚餌,有就抓一條,然後最後多出來的魚餌的1型別,可以製作一半魚餌用來給另一半抓魚。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int main() { int t; cin >> t; while (t--) { string s; int res = 0, n; cin >> n >> s; //魚餌數量 int cnt = 0; for (int i = 0; i < n; ++i) { if (s[i] == '2' || s[i] == '3') ++res; else if (s[i] == '0') { if (cnt) ++res, --cnt; } else if (s[i] == '1') ++cnt; } //多出來的魚餌 if (cnt != 0) { //一半的魚餌給另一半抓魚 res += cnt / 2; } cout << res << endl; } return 0; }