zoukankan      html  css  js  c++  java
  • Codeforces Round #598 (Div. 3)(C. Platforms Jumping)

    [题目](https://codeforces.ml/problemset/problem/1256/C)

    题意:有一条宽为n个河流,小丁在0号位置,要前往n+1位置,有m个木板在河流上方,给出长度ai,木板可以任意摆放但木板间的相对位置不能改变。

    小丁每次可以跳跃的范围为0-d,问能否在不落水的情况下,到达n+1位置。

    解法:贪心。最大值判断是否可达:小丁每次跳跃d,则可达最远处为所有木板长度加上(m+1)*(d-1)

    如果可到达,则模拟贪心每次能消耗的最大空隙。

    const int maxn = 1e3+9;
    int a[maxn] , vis[maxn];
    void solve(){
        int n , m , d ;
        cin >> n >> m >> d ;
        int sum = 0 ;
        rep(i , 1 , m){
            cin >> a[i];
            sum += a[i];
        }
        if(sum + (d-1)*(m+1) < n){//贪心所能达到的最远地方
            cout << "NO" << endl;
            return ;
        }
        int k = n - sum ;//剩余空隙数
        int index = 0 ;//木板下标
        int l = 0;//当前所在位置
        while(l < n){
            int ti = min(k , d-1);//尽可能的消耗的空隙
            l += ti ;
            int len = a[++index];//木板长度
            while(len--){
                vis[++l] = index ;
            }
            k -= ti ;//剩余空隙数
        }
        cout << "YES" << endl;
        rep(i , 1,  n){
            cout << vis[i] << " " ;
        }
        cout << endl;
    }
  • 相关阅读:
    GNU C的定义长度为0的数组
    Ubuntu如何启用双网卡
    DQN 文章第一篇
    awk用法
    Linux下C结构体初始化
    Linux kernel中的list怎么使用
    从美剧中学(1)
    Python @property 属性
    p40_数据交换方式
    3.TCP协议
  • 原文地址:https://www.cnblogs.com/nonames/p/11823472.html
Copyright © 2011-2022 走看看