組み合わせCCF / CSP-201812から3-CIDR

 

 

 

質問のシミュレーションの意味によると、しかし、唯一の90は、バグを見ていない、すべての後、彼らが望むアルゴリズムが、それはまた、トラブルを探していません。

 

1の#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3  の#define INF 0x3f3f3f3f
 4  の#define LL長い長い
 5  の#define PUI対<unsigned int型、整数>
 6  の#define MP make_pair
 7  の#define X第
 8  の#define yの第
 9  
10  CONST  INT MAXN = 1000005 11  PUI A [MAXN]。
12ベクター<PUI> ANS。
13  INT N、Q [ 4 ] = { 241680 }、L [] = { 08162432 }。
14  のint  ベース [] = {(1 << 24)、(1 << 16)、(1 << 8)、1 }。
15のostream&演算子 <<(のostream&アウト、PUI&U){
 16      のためにINT iは= 0 ; I < 4 ; ++ {I)
 17          アウト << UX / 基地 [I]%ベース [ 2 ]。
18          もし(I < 3アウト << " " 19      } アウト << " / " << UY。
20 リターンアウト21 }
 22 ブール issub(INT I、INT J){
 23 であれば([I] .Y == A [j]が.Y){
 24 であれば([I] .X == A [J] .X) { リターン1 ;}
 25  { 戻り0 ;}
                                 26      } そう であれば([I] .Y> [J] .Y)戻り 0 ;
27      {
 28          であれば(([J] .X >>(32 -a [I] .Y))==([I] .X >>(32 -a [I] .Y)))リターン 1 ;
29          他の リターン 0 ;
30      }
 31  }
 32  ブールOK(PUIのA、PUI B){
 33      PUIのTMP; tmp.x =アックス; tmp.y = Ay- 1 34      であれば(Ayの==により&& tmp.y> = 0   &&((AX >>(32 -Ay)>> 1)==(Bxを>>(32 -Ay)>> 1 ))
 35         &&(((AX >>(32 -Ay))・1)^((Bxを>>(32 -Ay))&1))== 1リターン 1 36      リターン 0 37  }
 38  int型のmain(){
 39      STR。
40の      IOS :: sync_with_stdio();
41      CIN >> N。
42      のためにINT iが= 0 ; iが<N ++ {i)が
 43          [I] .Y = [I] .X =0 ;
44          cinを>> STR。
45          INT POS = str.find(' / ')、CUR = 0、SZ = str.size()。
46          符号なしTMP = 0 47          のためにINT II = 0 ; II <SZ && STR [II] =!' / ' ; ++ II){
 48              であれば(STR [II] == ' ' ){
 49              [I]・X + =(TMP < <Q [CUR ++ ])。
50              TMP = 0 51              }{
 52              TMP = TMP * 10 +(STR [II] - ' 0 ' )。
53              }
 54          }
 55          であれば(TMP){
 56              [I]・X + =(TMP << Q [CUR ++ ])。
57          }
 58          であれば(POS =!文字列::のNPO){
 59              のためにINT III = POS + 1 ; III <SZ; ++ III)[I] .Y = [I]・Y * 10 +(STR [ III] - ' 0 ' )。
60          } {
 61             [I] .Y = L [CUR]。
62          }
 63      }
 64      ソート(+のN)。
65      のためにINT iが= 0 ; iが<N; ++ i)が{
 66          場合([i]が.Y == - 1続けます67          のint、K = 1 68          一方、(I + K <= N && issub(I、I + K))[I + K] .Y = - 1、K ++ 69          、I = I + K- 1 70      }
 71  
72      のためにINT I = 0; I <N; ++ I){
 73          であれば([I] .Y == - 1){ 続ける;}
 74          プイB = [I]。
75          一方(ans.size()&& OK(ans.back()、B)){
 76              Bxを= ans.back()X; = ans.back()によってY-。1 77              ans.pop_back()。
78          }
 79          ans.push_back(B)。
80      }
 81      (PUI U:ANS)COUT << U << ENDL。
82      リターン 0 ;
83 }

 

おすすめ

転載: www.cnblogs.com/zzqc/p/12454265.html