复杂度与模拟思路
  • 板块灌水区
  • 楼主lucy2012
  • 当前回复18
  • 已保存回复18
  • 发布时间2024/9/10 21:34
  • 上次更新2024/9/11 13:33:39
查看原帖
复杂度与模拟思路
1252442
lucy2012楼主2024/9/10 21:34
#include <iostream>
#include <algorithm>

using namespace std;

struct node {
    int h, j, m, w;
    node(const int _h, const int _j, const int _m, const int _w) : h(_h), j(_j), m(_m), w(_w) {}
    node operator+(const node &o) const {
        return node(max(h, w + o.h), max(m + o.w, o.m), w + o.w, max(max(j, o.j), m + o.h));
    }
};

node solve1(int h, int m) {
    int j = (h + m) >> 1;
    return solve1(h, j) + solve1(j + 1, m);
}

int solve2(int h, int m) {
    int j = (h + m) >> 1;
    if (h > m) return -1;
    if (h == m) return max(a[h], 0);
    int wht = 0, wmt = 0;
    int wh = 0, wm = 0;
    for (int i = j; i >= h; i--) {
        wht += a[i];
        wh = max(wh, wht);
    }
    for (int i = j + 1; i <= m; i++) {
        wmt += a[i];
        wm = max(wm, wmt);
    }
    return max(max(solve2(h, j), solve2(j + 1, m)), wh + wm);
}

int main() {
    int n;
    cin >> n;
    int a[1010];
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    cout << solve2(1, n) << endl;
    cout << solve1(1, n).j << endl;
    return 0;
}

solve (1,n) 的时间复杂度为()。

A.Θ(logn) B.Θ(n) C.θ(nlogn) D.θ(n^2)。

下面这题不是球最大子串和吗?

输入 “10 -32 100 -89 -4 -594”,输出的第二行为()。

答案17,我24

为了防止再被*,我已迁址学术走一趟,还有烦死了

2024/9/10 21:34
加载中...