IncDec Sequence

链接

既然题目要求最终所有数字都要相等,是不是意味着所有数字只差为0?

依据于此,我们可以创建一个长度为n的数组,第一个元素就是题目输入的第一个值,往后都是差值

比如2 3 4 5 7 4得到的结果是2 1 1 1 2 -3目标(? 0 0 0 0 0,第一个元素不确定)

我们对区间[l,r]进行操作,会发现新数组l和r+1的元素进行了改变,l的改变与操作相同,r+1则相反

特别的,如果r位于最后一位,那么新数组只有l进行了更改

我们发现了规律:操作时新数组只有至多两个元素改变,而且两个元素改变相反(一个加一,另一个减一),如果只改变一个元素,我们可以进行加一或减一

不难想到,同时对正数负数操作是最快的,刚刚那个数组我们可以让前面的整数减一,后面的负数加一

这样,我们操作3次可以得到 2 0 0 0 2 0(当然2 1 1 0 0 0也行,只要满足第一个元素后面相加为2即可),此时我们可以更改两个也可以更该一个(更改两个是第一个元素加一,后面的2减一,更改一个是后面的2减一,第一个不变)

不难看出,最终答案有3种(均为2,3或4),更改次数为3+2=5种

总结规律,更改次数为第一个元素之后的正数和与负数和的最大值,即max(正数,|负数|), 种数为(|正数-|负数||+1)

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    
    vector<long long>num(n),diff(n);
    for(int i=0;i<n;i++){
       cin>>num[i];
        if(i==0)diff[i]=num[i];
        else diff[i]=num[i]-num[i-1];
    }
    long long sum=0,negative=0;
    for(int i=1;i<n;i++){
        sum+=abs(diff[i]);
        negative+=diff[i]<0?-diff[i]:0;
    }
    cout<<max(sum-negative,negative)<<endl;
    cout<<abs(sum-2*negative)+1<<endl;
    
}

时间复杂度:O(n)

空间复杂度:O(n)

全部评论

相关推荐

12-27 20:52
已编辑
快手_MLOps(实习员工)
和干燥的的北方不同,杭州的12月是湿润的,白天从工位一抬头,雾霭已经笼罩了整个园区,从写字楼的落地窗看出去,如置身仙境。不敢高声语,恐惊天上人今天是周六,去公司坐了一会儿,一是想趁着周末工区比较安静学习一会儿,二是去健身房锻炼一会儿完美的结束这一天之后我和往常一样,走在创景路上,看着远处的恒生科技园,西溪永乐城,以及最远处的挂着火山引擎四个大字的写字楼,头戴式耳机默默放着《Sacred&nbsp;Play&nbsp;Secret&nbsp;Place&nbsp;》空灵的旋律让路程没有那么枯燥,心中默默计算着还有多久可以到家周末没有晚高峰,往常车水马龙的路口显得格外冷清,和往常走在同样路线的我,看到了对面走来了一个小哥未见其人先问其声小哥:“不好意思打扰一下,你能帮帮我吗”我:???小哥:“我来这边打工的,我现在身上没钱了,没地方住也没吃饭,可以问你借一点钱吗,300就可以,我已经被很多人拒绝了”我看着他眼睛,心里很想给他转这笔钱,但就在我想转账的时候,我突然想到,如果他是骗子呢?我也不过是一个初入社会的学生,如果他真的是骗子,最后让我身无分文,杭州还会像我现在看到的这样美好吗?犹豫片刻我说:“这样吧我带你去买一点吃的吃可以吗?”他说不用了,还没有走远,就听到他对刚过来马路的两个女生开启了同样的对话,我没有留下来继续听,只是继续保持着原有的路线。他是骗子吗,也许是。我应该给他转这笔钱吗,应该吧,万一他真的很需要呢?小时候看过的文学和影视作品,主角总会是一个乐观,有点呆呆的大男孩,被人卖了还会帮别人数钱。圣母心泛滥。但这样的人身上的坚持,执拗和善良恰恰经常打动年幼的我,我想或许未来我也会成为这样的人,止于至善。但现在我知道了小时候动画片里只有一个敌人,主角打败BOSS就可以皆大欢喜。但现在我知道,生活里四面八方都是敌人,我也不一定是主角,一山更比一山高,不管怎么选都有可能走到一个BE的结局所以做一个不那么善良,利己一点的人,不去当一个大家喜闻乐见,社会需要的人有问题吗?没有一丁点问题,或许我们成为不了热血漫男主,但在我们的生活中,我们可以成为自己快走到家门口的时候,看到烧烤店的老板娘还在招待着零星几个客人,不远处字节的写字楼还亮着灯“也许刚才我可以换点现金给他,这样就不会被有骗的风险了,算了,他有手有脚的,凭什么要让我接济”耳机里的歌已经换成了《Be&nbsp;What&nbsp;You&nbsp;Wanna&nbsp;Be》Dorin略带沙哑的嗓音洗去了刚才心中的一点点迷茫上高中的时候,我的语文老师告诉我,想让文章变得高级,就要在文章中尽量减少“我”这样的字眼出现,这样你的文章分数才会更高但在这个世界,“我”却不可或缺,生活的评分标准也不会白纸黑字的摆在你面前了,也许不能成为耀眼的男主角,但可以成为你自己今日方知我是我
牛客解忧铺
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务