题解 | #小笨的数组构造#

小苯的石子游戏

https://ac.nowcoder.com/acm/contest/73854/A

一道比较简单的思维题,考虑一下就很简单了 分析一下题目,a数组递增,但是不是严格递增,就说明1 1 1 1也算递增,此时b数组为0 0 0 0即可 之后就是4 3 2 1类似这种情况了,如果要递增,那么b可以为0 1 2 3,并且此时是最优情况 之后是4 2 1 3这种情况,此时我们把b[0]定义为0,那么b[1]为2,此时前缀最大值为4,那么b[2]为3,b[3]为1,到此不难发现,我们只需要维护前缀最大值就行了,类似我的代码,在更新前缀最大值的时候不断更新b中元素,代码如下

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,b) for(int i = a;i < b;++i)
void solve()
{
    int n;
    cin>>n;
    vector<int> v(n,0);
    v[0]=0;
    int premax;
    cin>>premax;
    rep(i,1,n)
    {
        int temp;
        cin>>temp;
        if(temp<premax)
        {
            v[i]=premax-temp;
        }
        else
            premax=max(premax,temp);
    }
    rep(i,0,n)
        cout<<v[i]<<" ";
}

signed main(void)
{
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
        solve();
    return 0;
}
全部评论

相关推荐

点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务