import java.io.IOException;
import java.util.Scanner;
public class Main {
//位运算,暴力二进制枚举
/*
* n位二进制数,每个都有不同的状态,1.0.可以表示2^n种不同情况。
* tp&1的结果若是1返回真。反之返回假。然后再将tp>>1。
* 这样就可以逐位判断了。
*/
static int ans=0,a[],n;
public static void main(String[] args) throws IOException {
Scanner in=new Scanner(System.in);
int t=in.nextInt();
while(t-->0) {
n=in.nextInt();
a=new int [n+1];
int ans[]=new int [n+1];
int m=0;
for(int i=0;i<n;i++) {
a[i]=in.nextInt();
m+=a[i];
}
// m/=2;
//枚举子集1~(2^n)-1
int maxs=1<<n;
for(int i=1;i<maxs;i++) {
int sum=subset(i);//当前子集的所有和
for(int j=0;j<n;j++) {
if((i&(1<<j))!=0) {//判断a[j]是否在sum中
if(sum*2>m && (sum-a[j])*2<=m) ans[j]++;//如果有它票数超一半,没它票数少一半,就加一
}
}
}
// System.out.print();
for(int i=0;i<n-1;i++) {
System.out.print(ans[i]+" ");
}
System.out.println(ans[n-1]);
}
}
static int subset(int x) {
int sum=0;
for(int i=0;i<n;i++) {
if((x&(1<<i))!=0) sum+=a[i];
}
return sum;//枚举出了一种子集的全部和
}
}
/*
2
1
10
7
5 7 4 8 6 7 5
1
16 22 16 24 20 22 16
*/
权利指数hdu1557
最新推荐文章于 2023-04-08 22:48:53 发布