1 条题解

  • 0
    @ 2025-1-17 20:44:32
    #include <iostream>
    #include <cstdio>
    #include <vector>
    #include <cmath>
    #include <algorithm>
    #include <cstring>
    #define int long long
    #define rep(i, l, r) for (int i = (l); i <= (r); i ++ )
    #define per(i, r, l) for (int i = (r); i >= (l); i -- )
    using namespace std;
    const int N = 1e5 + 5, M = (1 << 8);
    const long long INF = 1e18;
    long long value[M][M];
    int n, a[N];
    void fill_value() {
        for (int x = 0; x < M; x ++ )
            for (int y = 0; y < M; y ++ )
                value[x][y] = -INF;
    }
    signed main() {
        ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
        cin >> n;
        int t = 0;
        rep(i, 1, n) cin >> a[i];
        reverse(a + 1, a + 1 + n);
        fill_value();
        long long ans = 0;
        rep(i, 1, n) {
            int x = (a[i] >> 8), y = (a[i] & (M - 1));
            long long v = 0;
            for (int z = 0; z < M; z ++ )
                v = max(v, value[x][z] + (y & z));
            for (int z = 0; z < M; z ++ )
                value[z][y] = max(value[z][y], v + ((x & z) << 8));
            ans = max(ans, a[i] + v);
        }
        cout << ans << ' ';
        fill_value();
        ans = 0;
        rep(i, 1, n) {
            int x = (a[i] >> 8), y = (a[i] & (M - 1));
            long long v = 0, lst;
            for (int z = 0; z < M; z ++ )
                v = max(v, value[x][z] + (y | z));
            for (int z = 0; z < M; z ++ )
                value[z][y] = max(value[z][y], v + ((x | z) << 8));
            ans = max(ans, a[i] + v);
        }
        cout << ans << ' ';
        fill_value();
        ans = 0;
        rep(i, 1, n) {
            int x = (a[i] >> 8), y = (a[i] & (M - 1));
            long long v = 0, lst;
            for (int z = 0; z < M; z ++ )
                v = max(v, value[x][z] + (y ^ z));
            for (int z = 0; z < M; z ++ )
                value[z][y] = max(value[z][y], v + ((x ^ z) << 8));
            ans = max(ans, a[i] + v);
        }
        cout << ans << ' ';
        return 0;
    }
    
    • 1

    信息

    ID
    281
    时间
    1000ms
    内存
    512MiB
    难度
    9
    标签
    递交数
    27
    已通过
    2
    上传者