提出 #27271477
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
# define Rep(i,a,b) for(int i=a;i<=b;i++)
# define _Rep(i,a,b) for(int i=a;i>=b;i--)
# define RepG(i,u) for(int i=head[u];~i;i=e[i].next)
typedef long long ll;
typedef double db;
# define chkmax(a,b) a=max(a,b)
# define chkmin(a,b) a=min(a,b)
# define PII pair<int,int>
# define mkp make_pair
const int N=2.5e5+5;
const int M=19;
template<typename T> void read(T &x){
x=0;int f=1;
char c=getchar();
for(;!isdigit(c);c=getchar())if(c=='-')f=-1;
for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+c-'0';
x*=f;
}
int n;
int a[N],b[N];
int trie[1<<M][2],tot;
int fx[1<<M][2][M][2],fy[1<<M][2][M][2];
int g[1<<M][2];
int siz[1<<M][2];
ll ans;
ll query(int x,int y){
ll res=0;
int u=0;
_Rep(i,17,0){
int cx=x>>i&1,cy=y>>i&1;
int go=trie[u][cx^cy^1];
if(go)
_Rep(j,i,0){
res+=1ll*fx[go][cx][j][x>>j&1^1]<<j;
res+=1ll*fy[go][cy][j][y>>j&1^1]<<j;
}
if(!trie[u][cx^cy])break;
u=trie[u][cx^cy];
res+=1ll*g[u][cx^1]<<i;
}
return res;
}
void insert(int x,int y){
int u=0;
_Rep(i,17,0){
int cx=x>>i&1,cy=y>>i&1;
if(!trie[u][cx^cy])trie[u][cx^cy]=++tot;
u=trie[u][cx^cy];
g[u][cx]++;
_Rep(j,i,0){
fx[u][cx][j][x>>j&1]++;
fy[u][cy][j][y>>j&1]++;
}
}
}
int main()
{
# ifdef YuukiYumesaki
freopen("testdata.in","r",stdin);
freopen("test1.out","w",stdout);
# endif
read(n);
Rep(i,1,n)read(a[i]);
Rep(i,1,n)read(b[i]);
Rep(i,1,n){
ans+=query(a[i],b[i]);
insert(a[i],b[i]);
}
printf("%lld\n",ans);
return 0;
}
提出情報
提出日時
2021-11-15 15:16:27+0900
問題
D - Sum of Min of Xor
ユーザ
devout
言語
C++ (GCC 9.2.1)
得点
700
コード長
1810 Byte
結果
AC
実行時間
768 ms
メモリ
250800 KiB
コンパイルエラー
./Main.cpp: In function ‘ll query(int, int)’:
./Main.cpp:44:44: warning: suggest parentheses around arithmetic in operand of ‘^’ [-Wparentheses]
44 | res+=1ll*fx[go][cx][j][x>>j&1^1]<<j;
| ~~~~^~
./Main.cpp:45:44: warning: suggest parentheses around arithmetic in operand of ‘^’ [-Wparentheses]
45 | res+=1ll*fy[go][cy][j][y>>j&1^1]<<j;
| ~~~~^~
ジャッジ結果
セット名
Sample
All
得点 / 配点
0 / 0
700 / 700
結果
セット名
テストケース
Sample
00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt
All
00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 01-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt
ケース名
結果
実行時間
メモリ
00-sample-001.txt
AC
5 ms
3460 KiB
00-sample-002.txt
AC
2 ms
3556 KiB
00-sample-003.txt
AC
4 ms
3640 KiB
01-001.txt
AC
2 ms
3508 KiB
01-002.txt
AC
3 ms
4028 KiB
01-003.txt
AC
2 ms
4708 KiB
01-004.txt
AC
13 ms
7760 KiB
01-005.txt
AC
10 ms
9260 KiB
01-006.txt
AC
6 ms
3508 KiB
01-007.txt
AC
4 ms
3628 KiB
01-008.txt
AC
700 ms
241104 KiB
01-009.txt
AC
337 ms
172128 KiB
01-010.txt
AC
616 ms
229784 KiB
01-011.txt
AC
552 ms
220848 KiB
01-012.txt
AC
751 ms
250584 KiB
01-013.txt
AC
768 ms
250800 KiB
01-014.txt
AC
752 ms
250544 KiB
01-015.txt
AC
757 ms
250636 KiB
01-016.txt
AC
135 ms
5488 KiB
01-017.txt
AC
137 ms
5560 KiB