zoukankan      html  css  js  c++  java
  • [BZOJ1623][Usaco2008 Open]Cow Cars 奶牛飞车

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

    Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 580  Solved: 404 [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.

    可以发现,每个通道牛数一定要满足最少的和最大的相差不超过1
    那么把牛按照速度从小到大排一下,每次把牛加入到牛数最少的通道里即可
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std; 
    char buf[10000000], *ptr = buf - 1;
    inline int readint(){
        int n = 0;
        char ch = *++ptr;
        while(ch < '0' || ch > '9') ch = *++ptr;
        while(ch <= '9' && ch >= '0'){
            n = (n << 1) + (n << 3) + ch - '0';
            ch = *++ptr; 
        }
        return n;
    }
    const int maxn = 50000 + 10;
    int s[maxn];
    int main(){
        fread(buf, sizeof(char), sizeof(buf), stdin);
        int n, m, d, l;
        n = readint();
        m = readint();
        d = readint();
        l = readint();
        for(int i = 1; i <= n; i++) s[i] = readint();
        sort(s + 1, s + n + 1);
        int ans = 0, x = 0, y = 0;
        for(int i = 1; i <= n; i++){
            if(s[i] - x * d >= l){
                ans++;
                y++;
                if(y == m){
                    y = 0;
                    x++;
                }
            }
        }
        printf("%d
    ", ans);
        return 0;
    }
  • 相关阅读:
    J2SE-反射
    c3p0 连接数据库失败的问题
    c# 调用存储过程
    存储过程使用truncate时
    Parcelable intent传递对象时,需要将该对象实现Parcelable 或者Serializable
    android intent 在打开设置activity的时候在监听事件的内部 适用setclass()方法时 不是直接适用this 关键字
    c# 读取appconfig文件
    Oracle 连接数据库的几种方式
    通过反射获得方法,和绑定事件
    js 验证
  • 原文地址:https://www.cnblogs.com/ruoruoruo/p/7553985.html
Copyright © 2011-2022 走看看