Descripción del título
Hay N (1 <= N <= 50,000) vacas en la carretera, numeradas 1 ... N, cada vaca maneja su propio auto, y la velocidad de la i-ésima vaca es S_i (1 <= S_i <= 1,000,000) km / h, indicando que hay carriles M en la carretera (1 <= M <= N). En aras de la seguridad, cada vaca sigue el siguiente principio: hay x vacas delante del mismo carril, la velocidad de la vaca disminuirá D X (0 <= D <= 5,000) KM / h, por supuesto, no caerá por debajo de 0, por lo que La velocidad del vehículo debe ser máxima (S_i-D X, 0). Debido a la gran distancia entre los autos, incluso si el auto de atrás es más rápido que el de adelante, no tiene que preocuparse por la colisión.
Hay una velocidad mínima L (1 <= L <= 1,000,000) en la carretera. Cualquier automóvil por debajo de esta velocidad no puede ir en la carretera. Ahora calcule cuántos vehículos puede conducir en la carretera.
De entrada
Línea 1: números enteros N, M, D, L separados por 4 espacios;
Líneas 2 ... N + 1: La línea i + 1 describe la velocidad inicial de la i-ésima vaca.
Salida
Una línea: genera un número entero que indica el número máximo de carros de bueyes que se pueden conducir a alta velocidad.
Entrada de muestra
3 1 1 5
5
7
5
Salida de muestra
2
Análisis
De hecho, puede hacer un doble circuito, enumerar cada auto y cada carril, y luego volverse codicioso.
Código en
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,d,l,s[50001],a[50001],ans,s1,t;
int main()
{
freopen("cowcar.in","r",stdin);
freopen("cowcar.out","w",stdout);
cin>>n>>m>>d>>l;
for(int i=1;i<=n;i++)
{
cin>>s[i];
}
sort(s,s+n+1);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
t=s[i]-(a[j]*d);//c[j]为第j条车道上牛的数量
s1=max(t,0);//速度不小于0
if(s1>=l)//如果速度满足条件就进行统计
{
a[j]++;
ans++;
break;
}
}
}
cout<<ans;
fclose(stdin);
fclose(stdout);
return 0;
}