Kieszonkowe
# [PA2015]Kieszonkowe
这题我刚开始一看,想:我去,又是dp,好难.后来又看了看,一眼顶真,求出最大的和,如果和不是偶数,减去最小的奇数不就完了??
## 题目描述
给定 $n$ 个数,请从中选出若干个数,使得总和为偶数。
请最大化这个总和。
## 输入格式
第一行包含一个正整数 $n$。
第二行包含 $n$ 个正整数$a_1,a_2,...,a_n$。
## 输出格式
输出一个正整数,即最大的总和,若无解则输出 `NIESTETY`。
## 样例 #1
### 样例输入 #1
```
5
2 4 3 3 3
```
### 样例输出 #1
```
12
```
## 提示
对于 $100\%$ 的数据,$1\le n\le 10^6$,$1\le a_i\le 10^3$。
#include<bits/stdc++.h> using namespace std; const int N=1000010; long long n,a[N],f[N],sum; int main() { cin>>n; for(int i=0;i<n;i++) cin>>a[i],sum+=a[i]; if((n==2&&a[0]%2==0&&a[1]%2!=0)||(n==2&&a[0]%2!=0&&a[1]%2==0)||(n==1&&a[0]%2!=0))//特判一下,忘记特判n==1了呜呜呜wa了四个点 { cout<<"NIESTETY"; return 0; } if(sum%2!=0) { sort(a,a+n); int x; for(int i=0;i<n;i++) if(a[i]%2!=0) { x=i; break; } sum-=a[x]; } cout<<sum; return 0; }

浙公网安备 33010602011771号