第一行输入一个整数
。
第二行输入
个整数
。
输出一个整数,表示满足条件的最大偶数和。
3 2 5 6
8
当灵异背包里面有,此时总和为
,为奇数,不满足条件。
当灵异背包里面有,此时总和为
,为偶数,且为最大值。
1 3
0
选择的灵异背包为空,总和为0。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int sum = 0;
// 标记总和的奇偶性变化(奇数次奇数元素会使总和为奇数,偶数次则为偶数)
boolean ifOdd = false;
// 记录数组中最小的奇数(初始值设为整数最大值)
int minOdd = Integer.MAX_VALUE;
while (n-- > 0) {
int a = in.nextInt();
// 如果当前元素是奇数
if (a % 2 == 1) {
// 切换总和的奇偶性标记(每加入一个奇数,总和奇偶性改变)
ifOdd = !ifOdd;
// 更新最小奇数(保留最小的奇数)
minOdd = Math.min(a, minOdd);
}
sum += a;
}
// 如果总和最终为奇数(需要调整为偶数)
if (ifOdd) {
// 减去最小的奇数,得到最大可能的偶数和
System.out.print(sum - minOdd);
} else {
// 总和已经是偶数,直接输出
System.out.print(sum);
}
}
} #include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
while(cin >> n) {
vector<int> intVec(n);
for (int i = 0; i < n; i++) {
cin >> intVec[i];
}
//
int sum = 0;
int jsNum = 0;
int jsSum = 0;
int minJs = 0;
for (auto i : intVec) {
if (i % 2 == 0) { // 偶数的加起来一定是偶数
sum += i;
} else {
jsNum++;
jsSum += i;
if (minJs == 0) {
minJs = i;
}
minJs = minJs < i ? minJs : i;
}
}
//如果是偶数个数,都相加;如果是奇数个数减去最小的奇数
if (jsNum % 2 == 0) {
sum += jsSum;
} else {
jsSum -= minJs;
sum += jsSum;
}
cout << sum << endl;
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n+1];
for(int i=1;i<=n;i++){
a[i] = sc.nextInt();
}
int ans = 0;//答案
int minji = Integer.MAX_VALUE;
for(int i = 1; i <= n; i++){
ans += a[i];
if(a[i] % 2 != 0){
minji = Math.min(minji, a[i]);
}
}
if(ans % 2 != 0){
System.out.println(ans - minji);
}
else{
System.out.println(ans);
}
}
}
#include <algorithm>
#include <iostream>
#include <numeric>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
int num;
int sum = 0;
vector<int> bag1;//存储偶数背包
vector<int> bag2;//存储奇数背包
while (cin >> num) {
if (num % 2 == 0) {
bag1.push_back(num);
} else {
bag2.push_back(num);
}
}
//分别计算两个背包的数字之和
int sum1 = accumulate(bag1.begin(), bag1.end(), 0);
int sum2 = accumulate(bag2.begin(), bag2.end(), 0);
//奇数背包为空
if (bag2.empty()) {
sum1 = accumulate(bag1.begin(), bag1.end(), 0);
cout << sum1 << endl;
return 0;
}
//偶数背包为空,且奇数背包只有一个
if (bag1.empty() && bag2.size() == 1) {
cout << 0 << endl;
return 0;
}
//奇数背包不为空且数量为偶数
if (!bag2.empty() && sum2 % 2 == 0) {
sum = sum1 + sum2;
cout << sum << endl;
return 0;
}
//奇数背包不为空且数量为奇数
else if (!bag2.empty() && sum2 % 2 != 0) {
sort(bag2.begin(), bag2.end(), [](auto & it1, auto & it2) {
return it1 < it2;
});
sum = sum1 + sum2 - bag2[0];
cout << sum << endl;
return 0;
}
}
// 64 位输出请用 printf("%lld") #include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, sum = 0, odd_cnt = 0, odd_mini = 2e5;
cin >> n;
while(n--){
int temp;
cin >> temp;
sum += temp;
if(temp % 2 == 1){
odd_mini = min(odd_mini, temp);
odd_cnt++;
}
}
if(odd_cnt % 2){
sum -= odd_mini;
}
cout << sum;
return 0;
}
// 64 位输出请用 printf("%lld") const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
const n = Number(line);
const nums = (await readline()).split(' ').map(Number);
let sum = 0;
let odds = [];
for (let i = 0; i < n; i++) {
if (nums[i] % 2 === 0) {
sum += nums[i];
} else {
odds.push(nums[i]);
}
}
if (odds.length > 1) {
odds.sort((a, b) => b - a);
const len = odds.length % 2 === 0 ? odds.length : odds.length-1;
for (let i = 0; i < len; i++) {
sum += odds[i];
}
}
console.log(sum);
}
}()
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
ArrayList<Integer> list = new ArrayList<>();
int n = in.nextInt();
for (int i = 0; i < n; i++) {
list.add(in.nextInt());
}
Collections.sort(list);
int sum = 0, x = 0;
for (Integer i : list) {
sum += i;
}
for (Integer i : list) {
if (i % 2 != 0) {
x = i;
break;
}
}
if (sum % 2 == 0) {
System.out.println(sum);
} else {
System.out.println(sum - x);
}
}
}