HihoCoder - 1509 XOR Sorting

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HihoCoder - 1509 XOR Sorting相关的知识,希望对你有一定的参考价值。

?????????pre   i+1   ??????   ret   ?????????   cout   ??????   ??????   problem   

#1509 : ????????????

????????????:10000ms
????????????:1000ms
????????????:256MB

??????

????????????????????? 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.1509.异或排序(位运算 思路)

hihocoder #1467 : 2-SAT·hihoCoder音乐节 2-SAT

hihocoder #1468 : 2-SAT·hihoCoder新春晚会 2-SAT

HihoCoder #1467 : 2-SAT·hihoCoder音乐节

Hihocoder 2月29日

hihoCoder 1039 : 字符消除