请! 如何用代码解决MLE!

[ad_1]

我遇到了这个问题:

农夫约翰的奶牛非常喜欢吃甜食,它们特别喜欢吃拐杖糖! FJ 总共有 N 头牛,每头牛都有一定的初始高度,他想给它们喂 M 根拐杖糖,每根拐杖糖的高度也不同 (1≤N,M≤2⋅10^5)。
FJ 计划按照输入中的顺序将拐杖糖一根一根喂给奶牛。 为了给他的奶牛喂拐杖糖,他会将拐杖糖悬挂起来,以便最初拐杖糖刚好接触地面。 然后,奶牛将按照输入给出的顺序一一排成一排,然后走到拐杖糖处,每只都吃到它们的高度(因为它们无法到达更高的高度)。 即使奶牛吃掉了拐杖糖的底部,拐杖糖仍保持悬挂在最初设置的位置,并且不会降低到地面。 如果拐杖糖的底部已经高于牛的高度,那么牛在轮到她时可能什么也不吃。 每头牛吃完后,它们的身高都会根据它们吃掉的拐杖糖数量而增长,农夫约翰挂起下一根拐杖糖,奶牛们再次重复这个过程(奶牛 1 再次成为第一个开始吃拐杖糖的人)。下一个拐杖糖)。 特别提示:拐杖糖漂浮在空中,例如当一头高度为 2 的牛到达高度为 3 的拐杖糖时,它会吃掉 2 个单位(1 和 2),以及拐杖糖的第 3 个单位仍然漂浮在空中,因此只有高度≥2的牛才能到达并吃掉它。

输入格式(管道标准输入):
第一行包含 N 和 M。
下一行包含 Ncows 的初始高度,每个高度都在范围内 [1,10^9]。
下一行包含 M 根拐杖糖的高度,每个都在范围内 [1,10^9]。

输出格式(管道标准输出):
N 头牛每头的最终高度位于不同的线上。
请注意,此问题涉及的大尺寸整数可能需要使用 64 位整数数据类型(例如,C/C++ 中的“long long”)。

样本输入:
3 2
3 2 5
6 1
样本输出:
7
2
7 说明:
第一个拐杖糖有 6 个单位高。
1. 第一头牛吃掉第一根拐杖糖的部分直到高度 3,之后第一根拐杖糖的剩余部分占据高度 [3,6]。
2. 第二头牛不够高,无法吃掉第一根拐杖糖的剩余部分。
3. 第三头牛又吃了两单位第一根拐杖糖。 第一个拐杖糖的剩余部分,占据高度 [5,6],没有被吃掉。
接下来,每头牛的生长量取决于她吃的量,因此牛的身高变为 [3+3,2+0,5+2]=[6,2,7]。
第二根拐杖糖有 1 个单位高,第一头牛把它全部吃掉了。

评分:

* 输入2-10:N,M≤10^3
* 输入 11-14:无附加约束。

这是我的 C++ 答案:

C++
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
    ll n,m;
    cin>>n>>m;
    ll heightcow[n];
    for(int i=1;i<=n;i++){
        cin>>heightcow[i];
    }
    ll finalcow[n];
    for(ll i=1;i<=n;i++){
        finalcow[i]=heightcow[i];
    }
    ll heightcane[m];
    for(ll i=1;i<=m;i++){
        cin>>heightcane[i];
    }
    for(ll j=1;j<=m;j++){//cane
        bool statcane[m];
        for(ll i=1;i<=heightcane[j];i++){
            statcane[i]=true;
        }
        for(ll i=1;i<=n;i++){//cow
            for(ll k=1;k<=heightcow[i];k++){
                if(statcane[k]==true){
                    statcane[k]=false;
                    finalcow[i]++;
                }
            }
        }
    }
    for(ll i=1;i<=n;i++){
        cout<<finalcow[i]<<endl;
    }
    return 0;
}

我尝试过的:

我不知道该怎么办,我是一个初学者。 请帮忙!

解决方案1

关于代码,您首先注意到的是切片超出了数组的末尾:

C++
ll heightcow[n] = { 3, 2, 5 };
ll heightcane[m] = { 6, 1 };
ll finalcow[n];

for (ll i = 1; i <= n; i++) {
    finalcow[i] = heightcow[i];
}

数组总是从 0 开始,到 n-1 结束。

[ad_2]

コメント

标题和URL已复制