[模拟] aw3733. 去掉一个元素(模拟+aw周赛006_1)
Posted Ypuyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[模拟] aw3733. 去掉一个元素(模拟+aw周赛006_1)相关的知识,希望对你有一定的参考价值。
1. 题目来源
链接:3733. 去掉一个元素
2. 题目解析
模拟、枚举。
思路:
- 求去掉某个数后,剩余数之和是否为偶数。那么挨个去除每个数,判断剩余数之和的奇偶性即可。
- 考试的时候突发奇想,统计奇数、偶数个数,统计总和。若总和为奇数,那么去掉奇数剩余数就是偶数,若总和为偶数,去掉偶数剩余数就是偶数。
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( n ) O(n) O(n)
统计奇偶:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 105;
int n;
int a[N];
int main() {
cin >> n;
int ji = 0, ou = 0, sum = 0;
for (int i = 0; i < n; i ++ ) {
cin >> a[i];
if (a[i] & 1) ji ++ ;
else ou ++ ;
sum += a[i];
}
if (sum & 1) cout << ji << endl;
else cout << ou << endl;
return 0;
}
直接枚举:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 105;
int n;
int a[N];
int main() {
cin >> n;
int res = 0, sum = 0;
for (int i = 0; i < n; i ++ ) {
cin >> a[i];
sum += a[i];
}
for (int i = 0; i < n; i ++ )
if ((sum - a[i]) % 2 == 0)
res ++ ;
cout << res << endl;
return 0;
}
以上是关于[模拟] aw3733. 去掉一个元素(模拟+aw周赛006_1)的主要内容,如果未能解决你的问题,请参考以下文章
[进位制] aw3727. 乘方相加(进位制+模拟+aw周赛005_2)