纯暴力 20 求助
查看原帖
纯暴力 20 求助
1028403
封禁用户楼主2024/7/17 12:59

rt.

我不需要 AC,只想要暴力分。

这份代码是纯暴力,TLE 我懂,WA 我不懂,哪写挂了?

相信大佬们能读懂。

#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

const int N = 1e5 + 10;

int n, m1, m2;

struct Node {
    int l, r;
} a[N], b[N];

bool vis[N], vix[N];

bool cmp(Node x, Node y) {
    if (x.l != y.l)
        return x.l < y.l;
    return x.r < y.r;
}

int Calc(int x) {
    if (x == 0) return 0;
    int pos = 1, ans = 0;
    for (int i = 1; i <= m1; i++)
        if (i <= x)
            { ans++; vis[i] = true; continue; }
        else {
            bool flag = false;
            for (int j = pos; j < i; j++)
                if (vis[j] && a[j].r <= a[i].l)
                    { flag = true; pos = j + 1; vis[i] = true; break; }
            if (flag) ans++;
        }
    return ans;
}

int Calx(int x) {
    if (x == 0) return 0;
    int pos = 1, ans = 0;
    for (int i = 1; i <= m2; i++)
        if (i <= x)
            { ans++; vix[i] = true; continue; }
        else {
            bool flag = false;
            for (int j = pos; j < i; j++)
                if (vix[j] && b[j].r <= b[i].l)
                    { flag = true; pos = j + 1; vix[i] = true; break; }
            if (flag) ans++;
        }
    return ans;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    cin >> n >> m1 >> m2;
    for (int i = 1; i <= m1; i++)
        cin >> a[i].l >> a[i].r;
    sort(a + 1, a + 1 + m1, cmp);
    for (int i = 1; i <= m2; i++)
        cin >> b[i].l >> b[i].r;
    sort(b + 1, b + 1 + m2, cmp);
    int ans = 0;
    for (int i = 0; i <= n; i++) {
        memset(vis, false, sizeof vis);
        memset(vix, false, sizeof vix);
        ans = max(ans, Calc(i) + Calx(n - i));
    }
    cout << ans;
    return 0;
}
2024/7/17 12:59
加载中...