zoukankan      html  css  js  c++  java
  • 【dp每日一题】CF545C. Woodcutters

    大意:

    给出n个树的位置(递增),以及每个树的高度,工人可以将树向左砍倒,也可以向右砍倒,但是不能压到其他的树(无论是砍了还是没被砍的树都不能被压到),问最多能砍倒多少树

    思路:

    一开始想复杂了,只需要根据类似贪心的思想,首先判断能不能向左砍,如果不能,就判断能否向右砍,如果能的话更新一下(a[i]+=h[i]),这样可以保证是最优的,因为优先向左砍,这样砍树是最优的

    #include<bits/stdc++.h>
    
    using namespace std;
    
    const int N = 1e6 + 5;
    typedef long long LL;
    LL n,a[N],h[N],res;
    int main(){
        cin >> n;
        for (int i = 1; i <= n; i++){
            cin >> a[i] >> h[i];
        }
        for (int i = 1; i <= n;i++){
            if(i==1||i==n)
                res++;
            else if(a[i-1]<a[i]-h[i])
                res++;
            else if(a[i]+h[i]<a[i+1]){
                res++;
                a[i] += h[i];
            }
        }
        cout << res << endl;
        return 0;
    }
    
  • 相关阅读:
    vue cli
    vue element-ui
    vue mint-ui
    vue富文本编辑器
    vue-单文件组件相关
    axios
    vue Router
    css 行内元素和块级元素的一些注意事项
    golang协程和变量
    Internet地址介绍
  • 原文地址:https://www.cnblogs.com/dyhaohaoxuexi/p/14074239.html
Copyright © 2011-2022 走看看