HihoCoder - 1509 XOR Sorting
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HihoCoder - 1509 XOR Sorting相关的知识,希望对你有一定的参考价值。
?????????pre i+1 ?????? ret ????????? cout ?????? ?????? problem
#1509 : ????????????
??????
????????????????????? n ????????????????????? a[1..n]
???????????????????????????????????? S ???????????????????????????
(1).0 ??? S < 260
(2).???????????? 1 ??? i < n ?????? (a[i] xor S) ??? (a[i+1] xor S)
??????
???????????????????????? n
????????? n ??????????????????????????? a[1..n]
1 ??? n ??? 50
0 ??? a[i] < 260
??????
?????????????????????????????????
- ????????????
-
3 1 2 3
- ????????????
-
288230376151711744
????????????:
????????????n,???n????????????n<=50,a[i]<=2^60???????????????s??????s xor a[i]<=s xor a[i+1]
??????
??????2?????????????????????
00011110111
00011111111
?????????7???????????????8?????????????????????s??????s xor a[i]<=s xor a[i+1]
??????????????????8????????????s????????????????????????
?????????a[i]???a[i+1]??????????????????????????????s??????????????????????????????????????????
?????????s????????????60??????????????????????????????s??????????????????????????????????????????????????????0???1???????????????????????????????????????x,??????s?????????2???x??????????????????
1 #include<iostream> 2 using namespace std; 3 #include<queue> 4 #include<cstdio> 5 #include<map> 6 #include<set> 7 typedef long long LL; 8 LL a[100]; 9 int b1[100],b2[100]; 10 int v[100]; 11 void deal(LL a,LL b) 12 { 13 for (int i=1;i<=60;i++)//???a??????2????????? 14 { 15 b1[i]=a%2; 16 a/=2; 17 } 18 for (int i=1;i<=60;i++)//???b??????2????????? 19 { 20 b2[i]=b%2; 21 b/=2; 22 } 23 int ans; 24 for (int i=60;i>=1;i--)//??????????????????????????????,??????ans??? 25 { 26 if (b1[i]==b2[i]) continue; 27 ans=i; 28 break; 29 } 30 v[ans]=1;//???????????????????????? 31 } 32 int main() 33 { 34 int n; 35 cin>>n; 36 for (int i=1;i<=n;i++) 37 { 38 scanf("%lld",&a[i]); 39 } 40 for (int i=1;i<=n-1;i++) 41 { 42 deal(a[i],a[i+1]); 43 } 44 LL ans=0; 45 for (int i=1;i<=60;i++) 46 { 47 if (v[i]) continue; 48 ans++;//???????????????????????????????????? 49 } 50 //cout<<ans<<endl; 51 ans=(LL)1<<ans;//?????????2^ans 52 cout<<ans<<endl; 53 return 0; 54 }
以上是关于HihoCoder - 1509 XOR Sorting的主要内容,如果未能解决你的问题,请参考以下文章
hihocoder #1467 : 2-SAT·hihoCoder音乐节 2-SAT
hihocoder #1468 : 2-SAT·hihoCoder新春晚会 2-SAT