AtCoder Beginner Contest 141 F問題 - Xor Sum 3

Source

AtCoder Beginner Contest 141
問題文

問題概要

省略

解法

省略

cLayversion 20190914-1)のコード

C++に変換後のコードはこちら

int N;
ll A[1d5];
int ok[60];
{
  int i, j, k;
  ll res = 0, s = 0;
  
  rd(N,A(N));
  rep(i,N) s ^= A[i];

  rep(i,60) if(s & (1LL<<i)){
    res += (1LL<<i);
    rep(j,N) if(A[j] & (1LL<<i)) A[j] ^= (1LL<<i);
  }

  k = 0;
  for(i=59; i>=0; i--){
    rep(j,k,N) if(A[j] & (1LL<<i)) break;
    if(j==N) continue;
    if(j!=k) swap(A[k], A[j]);
    rep(j,k+1,N) if(A[j] & (1LL<<i)) A[j] ^= A[k];
    k++;
    if(k >= N) break;
  }

  s = 0;
  rep(i,N) if(s < (s^A[i])) s ^= A[i];
  res += 2s;

  wt(res);
}

Current time: 2021年09月27日22時56分38秒
Last modified: 2019年09月16日00時08分14秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder AtCoder_Beginner_Contest ABC141 ABC_F
トップページに戻る

Logged in as: unknown user (not login)

ログイン: