------------ Contenido de recuperación iniciado ------------
Traducir de la siguiente manera
(No lo entendí después de verlo durante mucho tiempo) Luego el hermano mayor lo vio de un vistazo (adorar al hermano mayor manualmente);
Solo pensando cuando hay una diferencia entre un bit en la matriz superior y un bit en la matriz inferior, si la diferencia es menor que 0, vea si hay un 1 al frente;
Mayor que 0 para ver si hay -1 al frente;
Practica
Use el mapa para almacenar la posición de la primera aparición de -1 y la posición de la primera aparición de 1, y luego vuelva a recorrerlo para ver si es factible; el método del hermano mayor ↓↓↓↓↓
1 #include <bits / stdc ++. H>
2 const int maxn = 1e5 + 50 ;
3 const int INF = 0x3f3f3f3f ;
4 usando el espacio de nombres estándar;
5 int a [maxn], b [maxn];
6 int main () {
7 int t;
8 cin >> t;
9 while (t-- ) {
10 int n;
11 int bandera = 0 , bandera1 = 0 , bandera2 = 0 ;
12 mapa <int , int > m;
13 m [ 1 ] = INF, m [- 1 ] = INF;
14 cin >> n;
15 para ( int i = 1 ; i <= n; i ++ )
16 cin >> a [i];
17 para ( int i = 1 ; i <= n; i ++ )
18 cin >> b [i];
19 para ( int i = 1 ; i <= n; i ++ ) {
20 if (a [i] == 1 &&!flag1) {// Grabar 1 posición de primera aparición
21 flag1 = 1 ;
22 m [ 1 ] = i;
23 }
24 if (a [i] == - 1 &&! flag2) {// Grabar -1 Una posición de ocurrencia
25 flag2 = 1 ;
26 m [ -1 ] = i;
27 }
28 }
29 para ( int i = 1 ; i <= n; i ++ ) {
30 if (a [i]> b [i ]) {
31 si(m [ -1 ]> = i) {// Compare cuando los elementos superior e inferior son diferentes, ya sea que haya habido la bandera 32 anterior
= 1 ;
33 salto ;
34 }
35 }
36 más si (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 más
46 cout << " SÍ " << ' \ n ' ;
47 }
48 return 0 ;
49 }