gasto mensual (dos puntos)

Y sin embargo, otra es la mitad de ella
daft melocotones aquí de nuevo

Tema: enlaces de gastos mensuales

题目描述:
Farmer John es un asistente de contabilidad asombrosa y se ha dado cuenta de que podría quedarse sin dinero para ejecutar la granja. Él ya ha calculado y registrado la cantidad exacta de dinero (1 ≤ moneyi ≤ 10.000) que tendrá que pasar cada día durante el próximo N (1 ≤ N ≤ 100.000) días.
FJ quiere crear un presupuesto para un conjunto secuencial de exactamente M (1 ≤ M ≤ N) períodos fiscales llamados “fajomonths”. Cada uno de estos fajomonths contiene un conjunto de 1 o más días consecutivos. Todos los días se contiene en exactamente una fajomonth.
El objetivo de FJ es organizar las fajomonths a fin de minimizar los gastos de la fajomonth con el mayor gasto y determinar así su límite de gasto mensual.

输入:
Línea 1: Dos enteros separados por un espacio: N y M
líneas 2 ... N + 1: Línea i + 1 contiene el número de dólares Farmer John pasa el día ITH

输出:
Línea 1: El límite mensual más pequeño posible Farmer John puede permitirse el lujo de vivir.

No es el costo de n días, que se dividirán en m meses, buscando el máximo coste mínimo.

Esta pregunta y el río rayuela que pregunta mucho como que
en el río rayuela Problema Solución

prestar atención

1.Low debe pasar el máximo diario, alta igual al costo total.
2. Total de pasar unos días con una variable estadística, cuando el costo es superior a mediados, núm ++, si num <tiempo = m, lo que sea mayor mediados descrito, esta vez para cambiar el alto valor (en este caso, hay que prestar atención!num poco tiempo fue a mediados de grande! ! ! Dibuje enfoque!)

la implementación del código

#include<stdio.h>
int main()
{
	int n,m,i,low=0,high=0,mid,a[100010];
	scanf("%d %d",&n,&m);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
		if(low<a[i]) low=a[i];
		high+=a[i]; 
	}
	while(low<high){
		mid=(low+high)/2;
		int num=1,sum=0;
		for(i=0;i<n;i++)
		{	
			if(sum+a[i]<=mid) sum+=a[i];
			else{
				sum=a[i];
				num++;
			}
		}
		if(num<=m) high=mid-1;
		else low=mid+1;
	}
	printf("%d\n",high);
	return 0;
}

Publicado 22 artículos originales · ganado elogios 1 · vistas 1054

Supongo que te gusta

Origin blog.csdn.net/Doro_/article/details/104066829
Recomendado
Clasificación