• bzoj 1623: [Usaco2008 Open]Cow Cars 奶牛飞车


    1623: [Usaco2008 Open]Cow Cars 奶牛飞车

    Time Limit: 5 Sec  Memory Limit: 64 MB
    Submit: 325  Solved: 223
    [Submit][Status][Discuss]

    Description

      编号为1到N的N只奶牛正各自驾着车打算在牛德比亚的高速公路上飞驰.高速公路有M(1≤M≤N)条车道.奶牛i有一个自己的车速上限Si(l≤Si≤1,000,000).
        在经历过糟糕的驾驶事故之后,奶牛们变得十分小心,避免碰撞的发生.每条车道上,如果某一只奶牛i的前面有K只奶牛驾车行驶,那奶牛i的速度上限就会下降K*D个单位,也就是说,她的速度不会超过Si - kD(O≤D≤5000),当然如果这个数是负的,那她的速度将是0.牛德比亚的高速会路法规定,在高速公路上行驶的车辆时速不得低于/(1≤L≤1,000,000).那么,请你计算有多少奶牛可以在高速公路上行驶呢?

    Input

    第1行输入N,M,D,L四个整数,之后N行每行一个整数输入Si.
    N<=50000

    Output

     
        输出最多有多少奶牛可以在高速公路上行驶.

    Sample Input

    3 1 1 5//三头牛开车过一个通道.当一个牛进入通道时,它的速度V会变成V-D*X(X代表在它前面有多少牛),它减速后,速度不能小于L
    5
    7
    5

    INPUT DETAILS:

    There are three cows with one lane to drive on, a speed decrease
    of 1, and a minimum speed limit of 5.

    Sample Output

    2

    OUTPUT DETAILS:

    Two cows are possible, by putting either cow with speed 5 first and the cow
    with speed 7 second.

    HINT

     

    Source

    Silver 

                        [Submit][Status][Discuss]

      一个典型的贪心,网上有人用堆做,感觉麻烦了。

      首先要按速度来排个序,这个应该是第一感觉吧。。。然后,显然,靠后的牛比考前的牛优秀。。。。我们把每一条道路看成一个集合,只不过集合中的元素是牛而且这些牛可以当成速度无差别的牛,因为他们给后面要加进来的牛的影响只和数量有关。。。所以显然,我们枚举每一头牛,要想让这头牛对答案有贡献,就让它找那个牛最少的集合(因为后面的牛更优秀,所以不存在把次集合留给后面牛的情况),所以加入牛的形式就是:

      假设三条路,H代表牛:

      ①  H     ② H      H     ③  H      H      H

      ④  H      H      H        ⑤  H      H      H    ..........这样一次按“层”排满,理解一下下面的 ANS/M 就好了

         H              H      H

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int N,M,D,L;
     4 int S[100000];
     5 int ANS;
     6 int main(){
     7     cin>>N>>M>>D>>L;
     8     for(int i=1;i<=N;i++){
     9         scanf("%d",&S[i]);
    10     }
    11     sort(S+1,S+N+1);
    12     for(int i=1;i<=N;i++){
    13         int ceng=ANS/M;
    14         if(S[i]-ceng*D>=L){
    15             ANS++;
    16         }
    17     }
    18     cout<<ANS;
    19     return 0;
    20 }
  • 相关阅读:
    Understanding Unix/Linux Programming-ls指令练习二
    Understanding Unix/Linux Programming-ls指令练习一
    Understanding Unix/Linux Programming-who指令练习
    复习自控有感——20160307
    根轨迹法的校正正目标、原理和方法
    Understanding Unix/Linux Programming-cp指令练习
    树莓派交叉编译环境在Linux下的建立
    Vue最全指令大集合————VUE
    JS实现动态瀑布流及放大切换图片效果(js案例)
    JS实现自动轮播图效果(js案例)
  • 原文地址:https://www.cnblogs.com/CXCXCXC/p/4703575.html
Copyright © 2020-2023  润新知