链接:click here
//题意:一组数分成两堆,如果能使两堆数的异或值相等,则满足条件,
//输出和大的一组的和,题目要求使和最大。如果不能输出NO。#include <stdio.h> #include <stdlib.h> #include <iostream> #include <string.h> #include <algorithm> #include <queue> #include <vector> using namespace std; #define maxn 1005 int V, m; vector<int>G[maxn]; int in[maxn]; int main() { int t,n,m,i,j=1; cin>>t; while(t--) { int s=0; cin>>n; int ss=0; for(i=0;i<n;i++) { cin>>in[i]; ss^=in[i]; s+=in[i]; } sort(in,in+n); printf("Case #%d: ",j++); if(!ss) { cout<<s-in[0]<<endl; } else cout<<"NO"<<endl; } }
原文:http://blog.csdn.net/u013050857/article/details/44313537