补种未成活胡杨

近些年来,我国防沙治沙取得显著成果。某沙漠新种植N棵胡杨(编号1-N),排成一排。一个月后,有M棵胡杨未能成活。
现可补种胡杨K棵,请问如何补种(只能补种,不能新种),可以得到最多的连续胡杨树?

#include<iostream>
#include<vector>
#include<unordered_set>
#include<algorithm>

using namespace std;

int main() {
    //处理输入
    int N;
    cin >> N;
    int M;
    cin >> M;
    unordered_set<int> deadTrees;    //未存活的树的编号
    for (int i = 0;i < M;i++) {
        int temp;
        cin >> temp;
        deadTrees.insert(temp);
    }
    int K;
    cin >> K;

    vector<bool> trees(N + 1, true);    //trees[i]表示第i棵树是否存活
    for (int i = 1;i < N + 1;i++) {
        if (deadTrees.find(i) != deadTrees.end()) {
            trees[i] = false;
        }
        //cout << trees[i] << " ";
    }

    int result = 0;
    
    for (int i = 1;i < trees.size();i++) {
        //这层循环计算以trees[i]开头的最大连续胡杨树
        int count = K;    //还剩下多少棵能补种的树
        int currMax = 0;
        if (trees[i]) {
            currMax++;
        }
        else {
            if (count >= 1) {
                currMax++;
                count--;
            }
            else {
                continue;
            }
        }
        for (int j = i+1;j<trees.size();j++) {
            if (trees[j]) {
                currMax++;
            }
            else {
                if (count >= 1) {
                    currMax++;
                    count--;
                }
                else {
                    break;
                }

            }
        }
        result = max(result, currMax);

    }

    cout << result << endl;


    return 0;
}




全部评论

相关推荐

运营3年修炼中接简历辅导:你的科研项目经历里,只写了你的动作,没有写你的思考和成果,不要只写使用什么进行了什么,这等于罗列你的任务,简历是为了突出你的优秀,你在什么样的任务背景下,克服了什么样的困难,针对性地做了哪些事情,最后达成了什么成果(用数据体现你的成果和效率)
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务