Aunque se coloca en la última pregunta, todavía es relativamente acuoso, solo necesita juzgar el problema de paridad.
tema
Tiene cuatro tipos de letras, cada una de las cuales tiene un número determinado.
Puede realizar un número limitado de operaciones
. Elimine las tres letras de l, oyv una a la vez (obviamente, las tres letras deben ser mayores que o igual a 1), y luego obtienes 3 letras E.
Después de varias (quizás cero) operaciones, ¿se pueden ordenar todas las letras en un palíndromo?
Ingrese descripción
Una t en la primera línea significa una consulta de grupo t
En la siguiente línea t, cada línea tiene cuatro números, lo que indica el número de letras l, o, v, e
Descripción de salida
t line, si puede emitir SÍ, no puede emitir NO
Entrada de muestra
2
2 3 4 5
2 0 0 1
Salida de muestra
NO
SI
rango de datos
t <= 10 ^ 5 El
número de cada letra es menor o igual que 10 ^ 9
Según la naturaleza del palíndromo, debe haber tres o más números pares en el número de cuatro letras (las letras en el medio pueden ser pares o pares), de la siguiente manera:
lovevol
loveevol
Según el significado de la pregunta, puede eliminar las tres letras l, o, v una a la vez y agregar 3 letras e, es decir, cambiar la paridad de las cuatro letras una vez por operación. La operación con número impar puede cambiar la paridad y la operación con número par no cambia.
Dado que el número de cada letra no puede ser menor que 0, el número máximo de operaciones es el mínimo de l, oy v. En este momento, solo es necesario considerar si la paridad de las tres restantes (o incluso menos) Las letras cumplen el requisito de formar un palíndromo La condición de la cuerda.
Código:
#include <iostream>
using namespace std;
int l,o,v,e;
int main(){
int t,min=0;
cin>>t;
int l1,o1,v1,e1;
for(int i=0;i<t;i++){
cin>>l>>o>>v>>e;
if(l>o)
min=o;
else
min=l;
if(min>v)
min=v;
if(min>0){
l1=l%2,o1=o%2,v1=v%2,e1=e%2;
if(l1+o1+v1+e1<=1||l1+o1+v1+e1>=3)
printf("YES\n");
else{
l-=min;
o-=min;
v-=min;
e1+=min%2;
if(e1==2)
e1=0;
l1=l%2,o1=o%2,v1=v%2;
if(l1+o1+v1+e1<=1||l1+o1+v1+e1>=3)
printf("YES\n");
else
printf("NO\n");
}
}
else{
l1=l%2,o1=o%2,v1=v%2,e1=e%2;
if(l1+o1+v1+e1<=1||l1+o1+v1+e1>=3)
printf("YES\n");
else
printf("NO\n");
}
}
return 0;
}