看别人代码看到一神秘的暴力,是不是数据水了
查看原帖
看别人代码看到一神秘的暴力,是不是数据水了
296043
komet楼主2021/5/4 19:46

主席书写完后看了看提交排名,看了看速度最快的代码,瞬间惊呆。我写了200行的代码2s的速度,这个就几行,速度是我10倍,仔细一看才发现不对,他这个代码最差是O(nm)的复杂度,就纯暴力,就加一个优化,就是每一次寻找只寻找k个,但如果k的值一直很大,那实际上还是会退化成O(nm),所以感觉是数据水了。

#include <algorithm>
#include <cstdio>
using namespace std;

const int maxn = 100010;
struct node {
    int s, e, p;
    inline bool operator<(const node &rhs) const { return p < rhs.p; }
};
node t[maxn];

int main() {
    int m, n;
    scanf("%d %d", &m, &n);
    for (int i = 1; i <= m; i++) scanf("%d %d %d", &t[i].s, &t[i].e, &t[i].p);
    sort(t + 1, t + n + 1);
    int x, a, b, c, k;
    long long ans, pre = 1;
    int cnt;
    while (n--) {
        scanf("%d %d %d %d", &x, &a, &b, &c);
        k = (int)(((long long)a * pre + b) % c + 1);
        ans = cnt = 0;
        for (int i = 1; i <= m; i++)
            if (t[i].s <= x && x <= t[i].e) {
                ans += t[i].p;
                if (++cnt == k)
                    break;
            }
        printf("%lld\n", pre = ans);
    }
    return 0;
}
2021/5/4 19:46
加载中...