Vacaciones de invierno 2020 [gmoj2223] [gallina gallina poniendo huevos] [intervalo y]

Descripción del título

Las gallinas en el país del pollo son las mejores para poner huevos. MGMG es una gallina en el país del pollo que tiene la mayor producción de huevos y es famosa por todo el país del pollo.
Los n gallineros exclusivamente para poner huevos en el país del pollo están alineados en el "centro de puesta" del país del pollo, numerados del 1 al n de izquierda a derecha. Cada gallinero tiene una capacidad máxima de puesta de huevos, y el gallinero i-ésimo tiene una capacidad máxima de puesta de huevos de ci. A veces, la producción de MGMG es demasiado grande para poner todos los huevos en un gallinero, así que tengo que pasar al siguiente gallinero para continuar poniendo huevos. Transfiera hasta que se hayan puesto todos los huevos, o reclame al administrador del "Centro de Egging" "¡El número de gallineros es demasiado pequeño, no puedo colocar suficientes huevos para un pollo!".
Para ahorrar la energía física gastada durante la transferencia, programe para ayudar a MGMG a encontrar varios gallineros consecutivos (lo menos posible) para que pueda poner todos los huevos.

De entrada

Ingrese un total de 2 líneas.
Ingrese dos enteros n y t en la línea 1 para indicar que hay n nidos para poner huevos en el "centro de puesta", y MGMG pondrá t huevos totales a la vez.
En la segunda línea, n enteros positivos ci (1≤i≤n), a su vez, indican que el número máximo de huevos que se pueden poner en el i-ésimo gallinero es ci.

Salida

Salida 1 línea de un entero o una palabra. Al generar un número entero, significa que se requieren al menos varios gallineros consecutivos para que MGMG ponga todos los huevos. Cuando MGMG no puede terminar todos los huevos después de usar todos los gallineros, MGMG está muy enojado y emite la palabra "enojado" (sin comillas dobles, preste atención a las mayúsculas).

Entrada de muestra

Entrada1:

5 4
1 2 1 2 3

Entrada2:

3 9
3 3 3

Entrada3:

3 5
1 2 1

Salida de muestra

Salida1:
2

Outupt2:
3

Salida3:
enojado

Limitación del rango de datos

Inserte la descripción de la imagen aquí

Pronto

Muestra1: En la
muestra 1, hay 5 gallineros, y la capacidad de puesta de huevos es 1, 2, 1, 2, 3, respectivamente. MGMG Si elige gallineros 1, 2 y 3 para poner 4 huevos, pero usa 3 gallineros, y elige gallineros 4 y 5 también puede poner 4 huevos (hay 1 más) Exceso de capacidad), solo se utilizan 2 gallineros.
Nota: Debido a los gallineros discontinuos No. 2 y No. 4, no se puede usar como una de las opciones.

Muestra2: En la
muestra 2, hay 3 gallineros, y la capacidad de desove es de 3, 3, 3. MGMG puede poner 3 huevos en cada uno de estos 3 gallineros consecutivos, de modo que se ponen exactamente 9 huevos.


Muestra 3 : En la muestra 3, el total de huevos desechables de todos los gallineros es inferior a la cantidad de puesta de huevos del MGMG, que no puede satisfacer la demanda de puesta de huevos del MGMG, y genera "Angry".

Análisis

¿Qué crees que esta pregunta no puede hacer?
De hecho, se me ocurrió una solución positiva desde el principio, pero no se hizo un solo detalle y desaparecieron 70 puntos.
Esta pregunta es sobre prefijos y preprocesamiento, enumerando directamente cada intervalo, juzgando si la suma del intervalo es mayor que t, y luego eligiendo el más pequeño de la competencia.
Hable acerca de por qué comencé WA: porque no consideré que si hay uno en el segundo ciclo, lo siguiente no tiene sentido. ¡Romperlo, de lo contrario TLE! !

Código en

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,t,a[1000010],ans,mx,mn=2147483647,sum;
int main()
{
    freopen("hen.in","r",stdin);
    freopen("hen.out","w",stdout);
    scanf("%d%d",&n,&t);
    for(register int i=1;i<=n;i++)
    {
    	scanf("%d",&a[i]);
    	sum+=a[i];
    	if(a[i]>=t)
    	{
    		cout<<1;
			return 0; 
		}
    	a[i]=a[i-1]+a[i];
	}
	if(sum<t)
	{
		cout<<"Angry";
		return 0;
	}
	for(register int i=1;i<=n-1;i++)
	{
		for(register int j=i+1;j<=n;j++)
		{
			int s;
			s=a[j]-a[i-1];
			if(s>=t)
			{
				mn=min(mn,j-i+1);
				break; 
			}
		}
	}
	printf("%d",mn);
    fclose(stdin);
    fclose(stdout);
    return 0;
}

110 artículos originales publicados · 100 alabanzas · 8009 visitas

Supongo que te gusta

Origin blog.csdn.net/dglyr/article/details/105151038
Recomendado
Clasificación