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;
}

 

posted @ 2023-05-25 16:32  o-Sakurajimamai-o  阅读(12)  评论(0)    收藏  举报
-- --