CSP simula B por primera vez

Descripción del título:

Gugudong tiene la intención de comer fritos crudos todos los días durante la semana de prueba del día N. Necesita comprar fritos crudos el día i. Para estimular el consumo, el restaurante Shengjian ofrece dos métodos de compra: 1. Compre dos Shengjian a la vez. 2. Compre una sartén frita hoy, y compre una sartén frita mañana. La tienda le dará un cupón y se lo llevará al día siguiente. Y no proporciona otras formas de compra. Los dos métodos de compra se pueden usar innumerables veces. Al final de la semana del examen, Gu Gudong no quería tener cupones adicionales y no desperdiciar ningún cupón, y le preguntó si podía comprar ai shengjian todos los días.

Formato de entrada:

Ingrese dos líneas, la primera línea es un número entero positivo n (1 <= n <= 100000), que indica el número de días en la semana de prueba.
Hay n números en la segunda línea, y el i-ésimo número ai (0 <= ai <= 10000) indica el número de fritos crudos para comprar en el i-ésimo día.

Formato de salida:

Si se pueden cumplir los requisitos, salida "SÍ", de lo contrario, salida "NO" (salida sin comillas).

Entrada de muestra 1:

4
1 2 1 2

Salida de muestra 1:

SI

Entrada de muestra 2:

3
1 0 1

Salida de muestra 2:

NO

Ideas:

Para comprar ai crudo frito en el día i de n días, cree una matriz n + 1 para simular el proceso de compra, si el número de fritos crudos que se comprarán en el día i es un número impar y no queda el día anterior, el valor simulado del día siguiente será el primero Después de +1, vaya directamente al día siguiente; si hay un excedente, vaya directamente al día siguiente; si hay un número par y no hay excedente el día anterior, vaya directamente al día siguiente; si hay un excedente, use la primera solución una vez para agregar el valor analógico del día siguiente al día siguiente Un dia Finalmente, una vez completada la simulación, verifique si quedan volúmenes en el día n + 1, es decir, si el valor de la simulación es> 0.

Código:

#include <iostream>

using namespace std;

int main()
{
	int n=0,flag=0;
	cin>>n;
	int *temp=new int[n];
	int *t2=new int[n+1];
	for(int i=0;i<n;i++)
	{
		cin>>temp[i];
		t2[i]=0;
	}
	t2[n]=0;
	for(int i=0;i<n;i++)
	{
		if(temp[i]%2==1&&t2[i]==0)
		{
			t2[i]=temp[i];
			t2[i+1]+=1;
		}
		if(temp[i]%2==1&&t2[i]==1)
		{
			t2[i]=temp[i];
		}
		if(temp[i]%2==0&&t2[i]==0&&temp[i]>0)
		{
			t2[i]=temp[i];
		}
		if(temp[i]%2==0&&t2[i]==1&&temp[i]>0)
		{
			t2[i+1]+=1;
			t2[i]=temp[i];
		}
		if(temp[i]==0&&t2[i]!=0)
		{
			t2[i]=-1;
			break;
		}
	}
	if(t2[n]==0)
	{
		flag=0;
		for(int i=0;i<n;i++)
		{
			if(temp[i]!=t2[i])
			{
				flag=-1;
				break;
			}
		}
	}
	else
		flag=-1;
	if(flag==0)
		cout<<"YES"<<endl;
	else
		cout<<"NO"<<endl; 
	return 0;
}

32 artículos originales publicados · elogiados 0 · visitas 692

Supongo que te gusta

Origin blog.csdn.net/qq_43814559/article/details/104977595
Recomendado
Clasificación