zxa and set
Accepts: 566
Submissions: 817
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
zxa有一个集合A={a1,a2,⋯,an},n表示集合A的元素个数,这个集合明显有(2n−1)个非空子集合。
对于每个属于A的子集合B={b1,b2,⋯,bm}(1≤m≤n),m表示集合B的元素个数,zxa定义它的价值是min(b1,b2,⋯,bm)。
zxa很好奇,如果令Sodd表示集合A的所有含奇数个元素的非空子集合的价值之和,Seven表示集合A的所有含偶数个元素的非空子集合的价值之和,那么∣Sodd−Seven∣是多少,你能帮助他吗?
输入描述
第一行有一个正整数T,表示有T组数据。
对于每组数据:
第一行有一个正整数n,表示集合有n个元素。
第二行有n个互异的正整数,表示集合的元素a1,a2,⋯,an。
每一行相邻数字之间只有一个空格。
1≤T≤100,1≤n≤30,1≤ai≤109
输出描述
对于每组数据,输出一行,包含一个非负整数,表示∣Sodd−Seven∣的值。
输入样例
3
1
10
3
1 2 3
4
1 2 3 4
输出样例
10
3
4
// 找规律,多测试几组数据就不难发现 |Sodd-Seven| 的值就等于输入的数据中的最大值
AC代码:
#include<cstdio>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int t,n;
int a[35];
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n,cmp);
printf("%d\n",a[0]);
}
return 0;
}