题解【COWCAR - Cow Cars】

原题链接:Link & Link(算是双倍经验呵

前言

双倍经验,题目也标明的很清楚了。

解题思路

贪心。将速度值较小的放在路的前面,这样减速就会多一点,就可以符合 $ 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;
}

管理员审核辛苦了。

posted @ 2020-03-04 17:11  Kriraya  阅读(135)  评论(0)    收藏  举报