牛客NOIP暑期七天营-普及组5-A手术等级

手术等级???

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

题目大意:一个从1开始编号的数组的不完美度为,现在可以将数组分成两个从1开始编号的数组,请问分成的两个数组的不完美度之和最小是多少?

将一个数组分成两半,左半边的不完美度的没有任何变化的。

右半部分,假设是从i开始,区间是[i, n]:
第i个元素由a[i]i变成了a[i]*1,第i+1个元素由a[i+1](i+1)变成了a[i+1]2,第j个元素由a[j]*j变成了a[j](j-i+1)……
即这个区间多有元素都少加了i-1次!

枚举端口位置i,右边区间之和乘以i-1即可以减去的不完美度。

注意,整个区间加起来,极端情况下是1e51e51e9/2,约5e18,好像没爆long long。

#include <bits/stdc++.h>
#define LL long long
#define N 100005
using namespace std;
LL n, m, i, j, k, a[N], s[N];
int main(){
    scanf("%lld", &n);
    for(i=1; i<=n; i++){
        scanf("%lld", &a[i]);
        s[i] = s[i-1] + a[i];
    }
    for(i=1; i<=n; i++){
        m = max(m, (s[n]-s[i-1]) * (i-1));
    }
    for(m=-m, i=1; i<=n; i++){
        m += a[i] * i;
    }
    printf("%lld\n", m);
    return 0;
}
全部评论

相关推荐

06-20 15:23
门头沟学院 Java
难道你们背八股都不觉得累?现在每天背八股背的我想吐
想去大厂的土豆子:累不累都是对比出来的,八股可比高考、考研轻松多了
点赞 评论 收藏
分享
炫哥_:哥们项目描述里面vector和mysql之类的都要写吗,直接开头技术栈巴拉巴拉就行了,完全不是技术点啊
点赞 评论 收藏
分享
鼠鼠没有找到暑期实习,简历太空了,感觉直接去秋招会完蛋,这个时间点找个日常实习混个简历,边实习边准备秋招有没有搞头啊
梦想是成为七海千秋:可以的完全可以的,找不到暑期就找日常,秋招之前还是有很多时间可以实习的,哪怕只实习了一个月都可以写在简历上
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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