Yahoo Progamming Contest 2019D(DP,思维)

#include<bits/stdc++.h>
using namespace std;
long long n,v,a,b,c,d,e;
int main(){
    scanf("%d",&n);
    while(n--){
        scanf("%d",&v);
        a+=v;//记录前面全清零需要的花费
        b=min(b+(v?v%2:2),a);//记录从清零之后全部变为偶数需要的花费
        c=min(c+!(v%2),b);//记录全是偶数之后全部变为奇数需要的花费
        d=min(d+(v?v%2:2),c);//记录全是奇数之后全部变为偶数需要的花费
        e=min(e+v,d);//记录全是偶数之后全部清零需要的花费
        printf("%lld",e);
    }
}

posted @ 2019-02-20 19:40  sewage  阅读(123)  评论(0编辑  收藏  举报