题解【COWCAR - Cow Cars】
前言
双倍经验,题目也标明的很清楚了。
解题思路
贪心。将速度值较小的放在路的前面,这样减速就会多一点,就可以符合 $ L $ 了。再把已经上路的牛所在的数组位置清零,相当于把它拿走了。最后循环 \(M\) 次处理 \(M\) 条路。
细节实现看代码吧。
代码
#include<bits/stdc++.h>
using namespace std;
int a[50001];
int main(){
int n,m,d,l;
cin>>n>>m>>d>>l;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);//先排序使速度值较小的放在前面
int ans=0;
for(int i=1;i<=m;i++){
int s=0;
for(int j=1;j<=n;j++){
if(!a[j]) continue;//若以上过路,则跳过本次循环
if(l<=a[j]-s*d || (a[j]-s*d<=0 && !l)){//按题意进行判断
ans++;
s++;
a[j]=0;//若为真,ans&s++,把a[j]清零
}
}
}
cout<<ans;//输出答案
return 0;
}
管理员审核辛苦了。
不管多么痛苦,都不要逃往轻松的那一边。
浙公网安备 33010602011771号