[Ybtoj High-Efficiency Advanced 1.2] [Codiciosos] Vacas secando la ropa
tema
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;
}