哔哩哔哩9.1 cpp笔试第二题求问

题目大意是给一个序列{a1, a2, ... , an}, 每次可以给这个序列上所有的数加上一个xi,问每次加完以后序列所有数的绝对值和是多少
我的思路是二分+前缀和。代码如下,只能过20%,不知道是哪里有问题,求各位大佬帮忙看看
ps:我图省事没用long long,提交的代码里使用的是long long
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> vec(n);
    vector<int> pre(n + 1);
    for(int i = 0; i < n; i++) cin >> vec[i];
    sort(vec.begin(), vec.end());
    for(int i = 0; i < n; i++) pre[i + 1] = pre[i] + vec[i];
    int q;
    cin >> q;
    int his = 0;
    while(q--){
        int xi = 0;
        cin >> xi;
        his += xi;
        auto pos = lower_bound(vec.begin(), vec.end(), -his) - vec.begin();
        int lp = pos;
        int rp = n - pos;
        int cursum = pre[pos] * -1 - lp * his + pre[n] - pre[pos] + his * rp;
        cout << cursum << endl;
    }
    return 0;
}


#哔哩哔哩笔试#
全部评论
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5 + 5; int a[N], n, q, x; int main() {     cin >> n;     unordered_map<ll, int> mp;     for (int i = 0; i < n; i++) {         cin >> a[i];         mp[a[i]]++;     }     cin >> q;     ll cur = 0;     while (q--) {         cin >> x;         cur += x;         ll res = 0;         for (auto& kv: mp) {             res += abs(kv.first + cur) * kv.second;         }         cout << res << endl;     }     return 0; }
1 回复 分享
发布于 2022-09-02 12:54 福建
二分找的应该是累加上his以后,数组小于0和大于等于0的分界点,然后使用最开始求的前缀和,根据正负数的绝对值的和的特点O(1)求出。
点赞 回复 分享
发布于 2022-09-02 01:45 四川
楼主,感觉你这思路确实可以,比我简洁多了,我只想到整个数组的求和,没有想到各个下标的前缀和
点赞 回复 分享
发布于 2022-09-01 22:08 北京
楼主,当数组里的数在-his和0之间的时候,这些数加上his,绝对值的增量不能按照his算吧
点赞 回复 分享
发布于 2022-09-01 21:37 天津

相关推荐

最近经历我的处女面,还是一家大厂,笑自己不自量力,面试官态度特好,问的问题也很专业。好多问题结结巴巴说不出来,还以为自己多厉害呢。跑过去耽误人家时间……😅简历上的写的最好还是实打实,不然一问三不知。
不要卷我了:我的第一次面大厂,前面聊的好好的,直到说让我写道sql,题很简单,但是我完全没准备光刷算法题了,group by后面多写了个字段,我说我写好了面试官笑了一下,后面说要去面下一个同学了
26届校招投递进展
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-01 10:56
点赞 评论 收藏
分享
下个早班:秒挂就是不缺人
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

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