本文最后更新于 548 天前,其中的信息可能已经有所发展或是发生改变。
思想:
- 贪心。
- 对于
a[i]
,优先使其进行-2
的操作; - 若
a[i] % 2 != 0
,则说明需要进行-1
的操作,此时进行判断:- 若
a[i + 1] > 0
,则将a[i + 1] --
,此时可以使得a[i]
操作后变为 $0$。 - 否则无法使得
a[i]
变为 $0$。
- 若
- 按照上述方案,从左到右依次处理
a[i]
即可。
代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 3;
int a[N];
void solve(){
int n; cin >> n;
for(int i = 0; i < n; i ++) cin >> a[i];
bool flag = 0;
for(int i = 0; i < n; i ++){
if(a[i] % 2 != 0){
if(i + 1 < n && a[i + 1] > 0) a[i + 1] --; // a[i] 为最后一个数且是奇数时也不成立。
else{
flag = 1; // 标记不满足条件
break; // 直接退出
}
}
}
if(flag) cout << "NO" << endl;
else cout << "YES" << endl;
}
int main(){
solve();
return 0;
}