【CodeForces】[698A]Vacations

文章字数:233

问题描述

问题分析

需要注意问的是至少休息多少天
所以要让$a[i]==0$的天数尽量少

从前到后
如果$a[i]==3$
那么如果$a[i-1]==1$那$a[i]=2$
如果$a[i-1]==2$那$a[i]=1$

如果在循环开始就有3的话则不用考虑
因为无论3有多少个都可以组合成有事天数
对结果没有影响

如果$a[i]==a[i-1]$
那么把$a[i]$更新为0

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
int a[120];
int main() {
    int n;
    while(scanf("%d",&n)!=EOF) {
        for(int i=0; i<n; i++) {
            scanf("%d",&a[i]);
            if(i>0&&a[i]==3&&(a[i-1]==1||a[i-1]==2))
                a[i]-=a[i-1];
            else if(i>0&&a[i]!=3&&a[i]==a[i-1])
                a[i]=0;
        }
        int cnt=0;
        for(int i=0; i<n; i++)
            if(a[i]==0)
                cnt++;
        printf("%d\n",cnt);
    }
    return 0;
}

该内容采用 CC BY-NC-SA 4.0 许可协议。

如果对您有帮助或存在意见建议,欢迎在下方评论交流。

加载中...