Team Formation 浙江省赛 (异或)

Team Formation

题意:在n个队伍种选择两个队伍,使 满足 (i.e. A ⊕ B > max{A,B}). n<1e5 时间:2s

分析: 首先对每个队员的the skill level 做处理,用二进制表示时记录1出现的位置,用数组bit【】保存;

遍历元素,,在二进制中出现0的位置时,bit数组中此处为1的二进制就可以存进来,计算所有和即可。

# include<iostream>#include<cstdio>#include<cstring>#include<string>using namespace std;const int maxn=100000+5;# define lld long longint A[maxn];int bit[50];int main(){int t;cin>>t;while(t–){int n,i,j;cin>>n;memset(bit,0,sizeof(bit));for(i=0;i<n;i++){scanf("%d",&A[i]);for(j=31;j>=0;j–)if(A[i]&(1<<j)) {bit[j]++; break;}}lld ant=0;for(i=0;i<n;i++){if(A[i]){for(j=31;j>=0;j–){if(A[i]&(1<<j)) break;}if(j){for(;j>=0;j–)if(!(A[i]&(1<<j))) ant+=bit[j];}}}printf("%lld\n",ant);}return 0;}

人的价值,在遭受诱-惑的一瞬间被决定

Team Formation 浙江省赛 (异或)

相关文章:

你感兴趣的文章:

标签云: