洛谷题解洛谷题解P9941 题解
xyx404
思路:
因为题中给出要使奇数组的编号之和为偶数偶数组的编号之和为奇数。
所以我们只需要知道编号的奇偶性。
所以我们可以先统计出奇数和偶数各有多少个。
然后会出现两种情况:奇数多,偶数多。
因为小学学过:奇数加奇数等于偶数,偶数加偶数等于偶数,奇数加偶数等于奇数。
所以可以得出解决方案:
- 奇数多时,将两个奇数相加变成偶数,减少奇数的数量,增加偶数的数量。
- 偶数多时,将偶数和奇数相加变成奇数,减少偶数的数量,增加奇数的数量。
代码
#include <bits/stdc++.h> using namespace std; bool jo (int x) { if ( x % 2 == 0) return 1; return 0; } int main() { int n , j = 0 , k = 0; cin >> n; int a[n]; for(int i = 0; i < n; i++){ cin >> a[i]; } for(int i = 0; i < n ; i++){ if (jo(a[i])) j++; else k++; } while(k > j){ k -= 2; j++; } if(j > k+1) j=k+1; cout << k+j; return 0; }
|