D. Ehabと期待XOR問題(思维)

トピックリンク:

https://codeforces.com/contest/1174/problem/D

効果の件名:

あなたのnおよびXは、コンフィギュレーションは、このような任意の異種配列または連続サブとxに等しいゼロではないではないことを確認します。このシーケンス番号の範囲は、あなたはどのくらいの最長のこのシーケンスを尋ね、その後、列を出力する[-1 1、(1個の<< N)]です。

具体的なアイデア:

問題の解決策:https://codeforces.com/blog/entry/67388

第一条件のために、排他的ORの連続的なサブシーケンスのいずれかが0に等しくない任意の2つのプレフィックスがCouchuと全ての連続サブことができるので、排他的OR任意の2つのプレフィックスのゼロに等しくないと等価です。そして、プレフィックスとXORのいずれか2つが0でないことに相当します

そして、任意の2つのプレフィックスが不在に等しいです。

第二の条件については、特に最初の問題解決のアイデアは同じです。任意即ち、排他的論理和xに等しくない2つのプレフィックスの連続したサブシーケンスであり、XORはxに等しくありません。

そこで、我々はすべてのそれの合法性を判断する接頭辞、現在の接頭辞を列挙することができます。

ACコード:

1つの#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3位LL定義長い 長い
4位INF定義0x3f3f3f3f 
5位ll_infを定義する(<< 1LL 60 6位LSON Lを、中間、RTを定義<< 1 
7#定義rsonミッド+ 1、R、RT << 1 | 1つの
8  のconst  int型 MAXN = 2E6 + 100 9  のconst  int型   N = 15 10  のconst  int型 MOD = 1E9 + 7 11ベクトル< int型 > Q;
12マップ< int型int型 > VIS;
13  のint main()の
 14  {
 15      int型N、X、maxstate。
16      のscanf(" %D%dの"、&​​N、&x)は、
17      maxstate =(1個の << N) - 1 18      VIS [ 0 ] = 1 19      INT予備= 0 20      のためにint型 I = 1 ; I <= maxstate; iが++ 21は     、{
 22は         IF(VISは[I ^ X])が
 23であり             続け24          VIS [I] = 1 ;
 25          q.push_back(I ^ PRE);列挙として//接頭辞が、現在の番号を記憶するために使用されます数である
 26である          =プレ; Iは、
 27      }
 28      INT LEN = q.size();
 29      のprintf(" %Dの\のN- " 、LEN)は、
 30      のためにINT I = 0 ; IがLEN <; I ++の31である     {
 32          IF(私は== 0 33であります             printf(" %dの" 、Q [I])。
34          他の
35              のprintf(" %dの" 、Q [I])。
36      }
 37      のprintf(" の\ n " );
38      リターン 0 ;
39 }

 

おすすめ

転載: www.cnblogs.com/letlifestop/p/10972193.html