[Ybtoj High-Efficiency Advanced 1.2] [Codiciosos] Vacas secando la ropa

[Ybtoj High-Efficiency Advanced 1.2] [Codiciosos] Vacas secando la ropa

tema

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí


Ideas para resolver problemas

Primera opción codiciosa: divida
el tiempo para secar la ropa
y luego juzgue si puede terminar de secar todo en este tiempo.
Puede cambiar este tiempo al límite derecho; de lo
contrario , se convierte en el límite izquierdo.
Se dice que puede usar la raíz grande pila, prueba la próxima vez


Código

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int n,m,t,l,r,ans;
int a[500010],x[500010];  //a是直接晒干的时间,x是湿的程度
bool pd(int mid)
{
    
    
	 int j=0;  //使用甩干机的时间
	 for (int i=1;i<=n;i++)
	 {
    
    
	 	 if (a[i]>mid)
	 	 {
    
    
	 	 	int c=x[i]-mid*m;  
	 	 	if (c%t!=0)
	 	 	   j+=c/t+1;
	 	 	   else j+=c/t;  
		 } 
		 if (j>mid) return false;
	 }
	 return true;
}
int main()
{
    
    
	scanf("%d%d%d",&n,&m,&t);
	for (int i=1;i<=n;i++)
	{
    
    
		scanf("%d",&a[i]);  
		x[i]=a[i]; 
		if (a[i]%m)
		   a[i]=a[i]/m+1;
		   else a[i]=a[i]/m;
		r=max(r,a[i]);
	}
	l=1;
	while (l<r)
	{
    
    
		  int mid=(l+r)/2;
		  if (pd(mid))
		     r=mid;
		     else l=mid+1;  
	}
	printf("%d",l);
	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/qq_45621109/article/details/111704862
Recomendado
Clasificación