csp simula la secuencia de 2-T1 HRZ

tema

límite de tiempo

1 s

Limitaciones de espacio

64 MB

Descripción del Título

Comparado con Gugudong, Ruishen es un buen chico que se despierta temprano y ansioso por la oscuridad. Ruishen se levantó muy temprano esta mañana y vio una secuencia aaa cuando iba a la estación B. Tenía un gran interés en esta secuencia.

Se pregunta si hay un número KKK, lo que hace que algunos números sumen KKK, algunos números resten KKK y algunos números permanezcan sin cambios, haciendo que todos los números en la secuencia completa sean iguales.

Para el número en cada posición en la secuencia, como máximo solo se puede realizar una suma o resta o no se realiza ninguna operación en la posición.

Como Ruishen solo puede usar la estación B, ¡te dejó esta pregunta!

Formato de entrada

La primera línea de entrada es un entero positivo t que representa el número de grupos de datos.

Luego, para cada grupo de datos, el primer entero positivo n ingresado representa la longitud de la secuencia a, y hay n números enteros en la siguiente fila, que representan la secuencia a.

Formato de salida

La salida contiene un total de t filas y cada grupo de datos genera una fila. Para cada grupo de datos, si existe tal K, envíe "SÍ", de lo contrario, envíe "NO". (La salida no contiene comillas)

Entrada de muestra

2
5
1 2 3 4 5
5
1 2 3 4 5

Salida de muestra

NO
NO

Puntos de datos (límite superior)

Inserte la descripción de la imagen aquí

práctica

1. Marca de inicialización = 0 para cada grupo de datos, recuento = 0
2. Ingrese los primeros datos, asígnelos a máximo, medio, mínimo y haga el recuento ++
3. Continúe ingresando los datos subsiguientes en temp para determinar si la temperatura es máxima \ Los \ min medios son todos desiguales, cuando no son iguales, hacen que el recuento + 1, cuando el recuento> 3, establezca el indicador en 1, lo que significa que no hay k.
4. Cuando el recuento <= 3, juzgue la temperatura de los datos ingresados Si es mayor que max, considerando que hay como máximo dos números diferentes en max \ min \ middle en este momento, si al menos dos datos deben repetirse, si desea guardar todos los datos, solo necesita sobrescribir un dato repetido. Cuando temp> max, juzgue si max y middle son iguales. Cuando son iguales, demuestre que temp se puede asignar a max para cubrir un dato repetido. Si no son iguales, porque max, middle y min están ordenados en orden descendente, y debe haber algunos de los tres Los dos son iguales, por lo que el mínimo y el medio deben ser iguales, así que mueva el máximo y el medio al medio y al mínimo respectivamente, y luego asigne la temperatura al máximo. De manera similar, si temp <min, realice operaciones similares. Cuando min <temp <max, asígnelo directamente al medio, porque los tres están ordenados por tamaño y dos de ellos son iguales, por lo que el medio debe ser igual a uno de min y max y se puede sobrescribir.
5. Después de ingresar los siguientes datos, juzgue si el recuento ha sido> 3, si es> 3, continúe directamente saltando las operaciones subsiguientes e ingrese los siguientes datos.
6. Después de procesar una fila de datos, juzgue si count == 3 y max-middle == middle-min, luego configure flag = 1
7. Cuando flag = 1, emite NO, de lo contrario, emite YES

error

Esta pregunta me despierta, no la dé por sentada, tiene que verificar después de terminarla, es demasiado miserable, el código que piensa que no hay problema se verifica repetidamente en busca de errores,
1. Debido a que son múltiples conjuntos de datos, debe ser Inicializar la bandera y contar hasta 0 al comienzo de cada grupo de datos.
2. Cuando el conteo es mayor que tres por primera vez, el código original sale directamente del ciclo. La intención original es podar, pero también omite la entrada de los siguientes datos. , Resultando en un error. Entonces, cuando cuente> 3, debe usar continuar para omitir el siguiente código después de ingresar los datos para asegurarse de que se puedan recibir todas las filas de datos.
3. El código inicial reemplaza directamente el valor máximo cuando los nuevos datos de entrada son mayores que el valor máximo en los datos originales. No se ha considerado la posibilidad de una matriz incremental, por lo que la entrada del tercer dato se almacenará en el segundo de máx. Los primeros datos se reemplazan, lo que conduce a la pérdida de los segundos datos. Es necesario juzgar si hay una copia de seguridad de máximo y mínimo en máximo, mínimo y medio. Reemplácelo directamente cuando haya una copia de seguridad; de lo contrario, mueva el medio y el máximo a mínimo y middle, y luego ponga los datos recién ingresados ​​en max.
4. Al principio, el código solo juzga max-middle == middle-min cuando juzga que puede generar SÍ, pero no consideró la situación de que si solo se incluyen uno o dos números en los datos de entrada, debe establecerse. Por lo tanto, la condición para juzgar la salida YES debe cambiarse para contar <= 2 | | max-middle = = middle-min.

Código

#include<iostream>
using namespace std;
int main()
{
    
    
 int t,n,count=0,flag=0;
 long long max,min,middle,temp;
 scanf("%d",&t);
 for(int i=0;i<t;i++)
 {
    
    
  flag=0,count=0;//因为为多组数据,不要忘记初始化 
  scanf("%d",&n);
  scanf("%lld",&middle);
  max=middle;
  min=middle;
  count++;
  for(int j=1;j<n;j++)
  {
    
    
   scanf("%lld",&temp);
   if(count>3)
    continue;    
   if(temp!=max&&temp!=min&&temp!=middle)
   {
    
      
    count++;
   if(count>3)
   {
    
    
    flag=1;//这里不可以直接break,否则无法接收后续的改行字符输入,会导致错误结果 
   }
   else
   {
    
    
   if(temp>max)
   {
    
    
    if(max==middle)//不可直接移,因为当数列程增长趋势会导致错误 
     max=temp;
    else
    {
    
    
     min=middle;
     middle=max;
     max=temp;
    }
     
   }
   else if(temp<min)
   {
    
    
    if(min==middle)
     min=temp;  
    else
    {
    
    
     max=middle;
     middle=min;
     min=temp;
      }  
   } 
   else
    middle=temp;  
   }    
   }  
 //  cout<<max<<' '<<middle<<' '<<min<<endl;
  }
  
  if(count==3&&max-middle!=middle-min)//注意当count!=3时不可用该条件判断是否满足条件 
   flag=1;
  if(flag==1)
   printf("NO\n");
  else
   printf("YES\n");
 }
 return 0;
 } 

Supongo que te gusta

Origin blog.csdn.net/alicemh/article/details/105388750
Recomendado
Clasificación