1. 程式人生 > >【ZZULIOJ】1205: 你愛我麼?

【ZZULIOJ】1205: 你愛我麼?

1205: 你愛我麼?

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 774   Solved: 326

Submit Status Web Board

Description

LCY買個n束花準備送給她暗戀的女生,但是他不知道這個女生是否喜歡他。這時候一個算命先生告訴他讓他查花瓣數,第一個花瓣表示"愛",第二個花瓣表示"不愛",第三個花瓣表示"愛"...... 
為了使最後結果是"愛",LCY需要從n束花中選出一些,你能幫他算出最後他送給這個女生的花中最多包含多少個花瓣嗎? 

Input

首先輸入一個整數T,表示測試例項的個數。 
接下來T組測試例項,每組例項首先輸入一行,包括一個整數n(1 <= n <= 100)。 
然後輸入一行,n個數a1,a2...an(1 <= ai <= 100),表示每束花包含的花瓣的個數。 

Output

每組例項輸出一個整數,表示LCY最多能送多少個花瓣給這個女生。

Sample Input

3 1 1 1 2 3 5 6 7

Sample Output

1 0 1 3

HINT

每一束花不允許去掉一些花瓣再送。這樣算命就不準了-_-#

Source

2013校賽


思路:

<1>看似很簡單的題目,實際上原理也很簡單。理解題意:找到陣列中最大的為奇數的和

<2>偶數減去奇數一定得到奇數,減去最小奇數必然得到最大和奇數。

<3>參考了Web Board的一些答案。

<4>以下為C++的參考程式碼 

#include <iostream>
using namespace std; 
int main(){
	int t,n,i,a[100],s,m;
	cin>>t;  
	while(t--){  //測試次數 
		s=0,m=101;
		cin>>n;
		int a;
		while(n--){
			cin>>a;
			s+=a;
			if(a%2!=0){
				m=m<a?m:a; //取最小奇數 
			}
		}
		if(s%2!=0)cout<<s<<endl;
	    else if(m==101)cout<<0<<endl;
	    else cout<<s-m<<endl;
	}
	return 0;
}