#include #include #include using namespace std; typedef long long ll; const int INF = 1e9;

int n, ans, sum; int a[25010];

int main(void) { cin >> n; for(int i = 1; i <= n; i++) { cin >> a[i]; }

int start = 1;
for(int i = 1; i <= n; i++) {
    if(a[i] == a[i - 1]) continue;
    sum++;
    
    if(start == 1 && a[i] == 1) ans += 0;
    else if(start == 1 && a[i] == 2) ans += 3;
    else if(start == 1 && a[i] == 3) ans += 1;
    else if(start == 1 && a[i] == 4) ans += 2;
    else if(start == 2 && a[i] == 1) ans += 3;
    else if(start == 2 && a[i] == 2) ans += 0;
    else if(start == 2 && a[i] == 3) ans += 4;
    else if(start == 2 && a[i] == 4) ans += 1;
    else if(start == 3 && a[i] == 1) ans += 1;
    else if(start == 3 && a[i] == 2) ans += 4;
    else if(start == 3 && a[i] == 3) ans += 0;
    else if(start == 3 && a[i] == 4) ans += 3;
    else if(start == 4 && a[i] == 1) ans += 2;
    else if(start == 4 && a[i] == 2) ans += 1;
    else if(start == 4 && a[i] == 3) ans += 3;
    else if(start == 4 && a[i] == 4) ans += 0;
    
    start = a[i];
    
    if(sum > 4) {
        start = 1;
        sum = 0;
    }
}

cout << ans << endl;
return 0;
题目描述给定整数n给定n个整数xi1≤xi≤4 表示小Z要去的站点 如果连续两个要去的地方相同那么直接忽略其中的一个。求小Z最快多长时间走完默认一开始在1号点。走完1次过一个单位时间。单位时间内会变化一次变化规律是:第一次开始时1可以到32可以到4反方向也行走完后或者不走进入下一次下面三种也满足。第二次 14 可以互到。第三次 1可以到23可以到4反方向也行。第四次 23可以互到。走完后或者不走进

原文地址: http://www.cveoy.top/t/topic/iRSq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录