zcmu 1376: 天天酷跑

1376: 天天酷跑

Time Limit: 1 Sec Memory Limit: 128 MB

Description

在天天酷跑這個遊戲中,玩家的目的是爲了收集更多的分數和奔跑更遠的距離。能增加分數的道具一共有4種,分別是金幣銀幣銅幣和動物頭像。其中金幣能增加5分,銀幣能增加3分,銅幣1分,動物頭像則能增加10分。天天酷跑中還有一種叫做點石成金的道具,可以在接下來10秒內將獲得的銀幣銅幣變成金幣。假設玩家在1秒內只能獲得一樣道具(包括得分的道具),且若玩家處於點石成金的狀態下獲得了點石成金道具,則會刷新點石成金的持續時間(既點石成金的持續時間又變成了10秒),給定接下來n秒內每秒出現的道具,計算出經過n秒後玩家能獲得多少分數。
Input

多組測試數據,每組測試數據的第一行爲一個正整數n(1<=n<=10^6)。第二行爲n個字符('A’表示金幣,'B’表示銀幣,'C’表示銅幣,'D’表示動物頭像,'E’點石成金)。
Output

對於每組測試數據輸出一個整數代表n秒後獲得的分數。
Sample Input

5
ABCDE
5
EDCBA
Sample Output

19
25
HINT

Source

【分析】
enmmmm感覺理清思路之後,其實還是不復雜的

【代碼】

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
 
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        char y[1000005];
        scanf("%s",y);
        double z=0,x=0;//x是點石成金的時間
        for(int i=0;i<n;i++)
        {
            switch(y[i])
            {
                case 'A':if(x==0)z+=5;else {x--;z+=5;}break;
                case 'B':if(x==0)z+=3;else {x--;z+=5;}break;
                case 'C':if(x==0)z+=1;else {x--;z+=5;}break;
                case 'D':if(x==0)z+=10;else {x--;z+=10;}break;
                case 'E':x=10;break;
            }
        }
        printf("%.0lf\n",z);
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章