Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
55191 | Ryan123 | 线性基 (basis) | C++ | 通过 | 100 | 18 MS | 264 KB | 652 | 2022-08-10 11:40:57 |
#include <bits/stdc++.h> using namespace std; typedef long long ll; int cnt[25],n; priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > q; int main() { ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); cin>>n; for(int i=1,x; i<=n; i++) { cin>>x; for(int j=0; j<20; j++) if((1<<j)&x) cnt[j]++; } for(int i=0; i<20; i++) q.push(make_pair(cnt[i],i)); ll sum=0,rec=(1<<20)-1,lst=0; while(!q.empty()) { pair<int,int> now=q.top(); q.pop(); sum+=rec*rec*(now.first-lst); lst=now.first; rec^=(1<<now.second); } cout<<sum<<'\n'; return 0; }