CF B.カインドアントン(4月8日)

------------リカバリコンテンツが開始しました------------

 

 

 

 次のように翻訳します

 

 

 (長い間見てもわからなかった)それから、兄はそれを一目で見た(手動で兄を崇拝した)。

上の配列のビットと下の配列のビットに違いがある場合を考えて、その差が0より小さい場合は、前に1があるかどうかを確認します。

前に-1があるかどうかを確認するには、0より大きい。

練習:

マップを使用して、-1の最初の発生の位置と1の最初の発生の位置を格納し、次にもう一度トラバースして、実行可能かどうかを確認します。兄の方法↓↓↓↓↓

1 #include <bits / stdc ++。h>
 2  const  int maxn = 1e5 + 50 ;
3  const  int INF = 0x3f3f3f3f ;
4  名前空間std を使用し ます5  int a [maxn]、b [maxn];
6  int   main(){ 
 7      int t;
8      cin >> t;
9      while(t-- ){
 10          int n;
11          int flag = 0、flag1 = 0、flag2 = 0 ;
12          マップ<intint > m;
13          m [ 1 ] = INF、m [ -1 ] = INF;
14          cin >> n;
15          のためにINT iは= 1 ; iが<= N; I ++ 16              CIN >> [I]。
17          のためにINT iは= 1 ; <I = N; I ++ 18              CIN >> B [i]は、
19          forint i = 1 ; i <= n; i ++ ){
 20              if(a [i] == 1 &&!flag1){//レコード1の最初の出現位置
 21                  flag1 = 1 ;
 22                  m [ 1 ] = i;
 23              }
 24              if(a [i] ==- 1 &&!flag2){//レコード-1 1つの出現位置
 25                  flag2 = 1 ;
 26                  m [ -1 ] = i;
 27              }
 28          }
 29          forint i = 1 ; i <= n; i ++ ){
 30              if(a [i]> b [i ]){
 31                  if(m [ -1 ]> = i){//以前の32                      フラグがあったかどうか、上部と下部の要素が異なる場合に比較し
 ます = 1 ;
 33                      break ;
 34                  }
 35              }
 36              else  if(a [i] < b [i]){
 37                  if(m [ 1 ]> = i){
 38                      flag = 1 ;
 39                      break ;
 40                  }
 41              }
 42          }
 43          if (flag)
 44              cout << "NO " << ' \ n ' ;
 45          else 
46              cout << " YES " << ' \ n ' ;
 47      }
 48      return  0 ;
 49 }

 

おすすめ

転載: www.cnblogs.com/ahijing/p/12682890.html