提交记录 14029


用户 题目 状态 得分 用时 内存 语言 代码长度
wlzhouzhuan 2003. 【NOI2020】美食家(加强版) Wrong Answer 0 247.358 ms 183792 KB C++ 2.75 KB
提交时间 评测时间
2020-08-21 21:22:17 2020-08-21 21:22:33
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;

static inline void upd(ll& x, const ll y) {
    if (y > x)
        x = y;
}

static int n, m, c[5002];
struct Edge {
    char u, v, w;
} e[50002];
struct Event {
    int t, x, y;
    bool operator <(const Event& rhs) const {
        return t < rhs.t;
    }
} q[20005];
static ll pool[23333][1005];
static ll (*buf)[1005] = &pool[0];
static int xjj;
struct Pre {
    ll (*dp)[1005];
    int orig, anot; ll dx;
    void init(int s) {
        dp = buf;
        memset(dp, 0xcc, sizeof(*dp) * 5);
        dp[0][s] = 0;
        vector<ull> hs;
        for (int i = 0;; i++) {
            for (int j = 0; j < n; j++)
                dp[i][j] += c[j];
            ull h = 0;
            for (int j = 0; j < n; j++)
                h ^= (j + 1) * (ull) (dp[i][j] - dp[i][s]);
            hs.push_back(h);

            if (xjj) {
                if (i > xjj + 5 && !memcmp(hs.data() + i - xjj - 5, hs.data() + i - 5, 5 * sizeof(ull))) {
                    orig = i - xjj;
                    anot = i;
                    break;
                }
            } else {
                for (int j = 5; j + 5 < i; j++)
                    if (!memcmp(hs.data() + i - 5, hs.data() + j - 5, 5 * sizeof(ull))) {
                        orig = j;
                        anot = i;
                        goto ok;
                    }
            }

            memset(dp + i + 5, 0xcc, sizeof(*dp));
            for (int j = 0; j < m; j++)
                upd(dp[i + e[j].w][e[j].v], dp[i][e[j].u]);
        }
        ok:;
        dx = dp[anot][s] - dp[orig][s];
        xjj = anot - orig;
        buf += anot;
    }
    ll query(int T, int t) {
        if (T < anot)
            return dp[T][t];
        return dp[orig + (T - orig) % xjj][t] + (T - orig) / xjj * dx;
    }
} pre[50002];

static ll calc(int s, int t, int T) {
    return pre[s].query(T, t) - c[t];
}

int main() {
    int T, k;
    cin >> n >> m >> T >> k;
    for (int i = 0; i < n; i++)
        cin >> c[i];
    for (int i = 0; i < m; i++) {
        int u, v, w;
        cin >> u >> v >> w;
        e[i].u = u - 1; e[i].v = v - 1; e[i].w = w;
    }

    for (int i = 0; i < n; i++)
        pre[i].init(i);

    for (int i = 1; i <= k; i++) {
        cin >> q[i].t >> q[i].x >> q[i].y;
        q[i].x--;
    }
    sort(q + 1, q + k + 1);
    q[0].t = 0; q[0].x = 0; q[0].y = 0;
    q[k + 1].t = T; q[k + 1].x = 0; q[k + 1].y = c[0];

    static ll dp[200005];
    memset(dp, 0xcc, sizeof(dp));
    dp[0] = 0;
    for (int i = 1; i <= k + 1; i++) {
        for (int j = 0; j < i; j++)
            upd(dp[i], dp[j] + calc(q[j].x, q[i].x, q[i].t - q[j].t));
        dp[i] += q[i].y;
    }
    upd(dp[k + 1], -1);
    cout << dp[k + 1] << endl;

    return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #1238.424 ms21 MB + 856 KBWrong AnswerScore: 0

Subtask #1 Testcase #2238.632 ms20 MB + 1000 KBWrong AnswerScore: 0

Subtask #1 Testcase #3239.174 ms24 MB + 144 KBWrong AnswerScore: 0

Subtask #1 Testcase #4238.459 ms18 MB + 740 KBWrong AnswerScore: 0

Subtask #1 Testcase #5240.016 ms24 MB + 832 KBWrong AnswerScore: 0

Subtask #1 Testcase #6237.64 ms18 MB + 4 KBWrong AnswerScore: 0

Subtask #1 Testcase #7246.226 ms179 MB + 476 KBRuntime ErrorScore: 0

Subtask #1 Testcase #8240.797 ms27 MB + 172 KBWrong AnswerScore: 0

Subtask #1 Testcase #9243.046 ms179 MB + 496 KBRuntime ErrorScore: 0

Subtask #1 Testcase #10242.029 ms30 MB + 160 KBWrong AnswerScore: 0

Subtask #1 Testcase #11237.045 ms17 MB + 960 KBWrong AnswerScore: 0

Subtask #1 Testcase #12239.323 ms18 MB + 752 KBWrong AnswerScore: 0

Subtask #1 Testcase #13246.692 ms179 MB + 476 KBRuntime ErrorScore: 0

Subtask #1 Testcase #14236.611 ms16 MB + 440 KBWrong AnswerScore: 0

Subtask #1 Testcase #15244.551 ms179 MB + 476 KBRuntime ErrorScore: 0

Subtask #1 Testcase #16239.13 ms24 MB + 20 KBWrong AnswerScore: 0

Subtask #1 Testcase #17247.358 ms179 MB + 476 KBRuntime ErrorScore: 0

Subtask #1 Testcase #18238.401 ms21 MB + 48 KBWrong AnswerScore: 0

Subtask #1 Testcase #19237.571 ms19 MB + 432 KBWrong AnswerScore: 0

Subtask #1 Testcase #20245.707 ms179 MB + 476 KBRuntime ErrorScore: 0

Subtask #1 Testcase #21245.759 ms179 MB + 476 KBRuntime ErrorScore: 0

Subtask #1 Testcase #22243.316 ms22 MB + 508 KBWrong AnswerScore: 0

Subtask #1 Testcase #23238.103 ms21 MB + 4 KBWrong AnswerScore: 0

Subtask #1 Testcase #24238.452 ms21 MB + 784 KBWrong AnswerScore: 0

Subtask #1 Testcase #25236.443 ms17 MB + 128 KBWrong AnswerScore: 0

Subtask #1 Testcase #26246.843 ms179 MB + 476 KBRuntime ErrorScore: 0

Subtask #1 Testcase #27237.514 ms20 MB + 284 KBWrong AnswerScore: 0

Subtask #1 Testcase #28238.995 ms24 MB + 28 KBWrong AnswerScore: 0

Subtask #1 Testcase #29239.923 ms25 MB + 632 KBWrong AnswerScore: 0

Subtask #1 Testcase #30238.347 ms21 MB + 8 KBWrong AnswerScore: 0

Subtask #1 Testcase #31236.732 ms17 MB + 188 KBWrong AnswerScore: 0

Subtask #1 Testcase #32236.883 ms17 MB + 972 KBWrong AnswerScore: 0

Subtask #1 Testcase #33241.253 ms22 MB + 548 KBWrong AnswerScore: 0

Subtask #1 Testcase #34238.035 ms21 MB + 60 KBWrong AnswerScore: 0

Subtask #1 Testcase #35239.659 ms24 MB + 856 KBWrong AnswerScore: 0

Subtask #1 Testcase #36238.423 ms21 MB + 772 KBWrong AnswerScore: 0

Subtask #1 Testcase #37244.406 ms179 MB + 476 KBRuntime ErrorScore: 0

Subtask #1 Testcase #38239.783 ms24 MB + 968 KBWrong AnswerScore: 0

Subtask #1 Testcase #39245.485 ms179 MB + 476 KBRuntime ErrorScore: 0

Subtask #1 Testcase #40237.735 ms19 MB + 448 KBWrong AnswerScore: 0

Subtask #1 Testcase #41239.214 ms23 MB + 276 KBWrong AnswerScore: 0

Subtask #1 Testcase #42236.806 ms17 MB + 140 KBWrong AnswerScore: 0

Subtask #1 Testcase #43238.366 ms21 MB + 860 KBWrong AnswerScore: 0

Subtask #1 Testcase #44237.643 ms19 MB + 476 KBWrong AnswerScore: 0

Subtask #1 Testcase #45241.119 ms27 MB + 908 KBWrong AnswerScore: 0

Subtask #1 Testcase #46237.677 ms20 MB + 212 KBWrong AnswerScore: 0

Subtask #1 Testcase #47245.579 ms179 MB + 476 KBRuntime ErrorScore: 0

Subtask #1 Testcase #48238.401 ms21 MB + 776 KBWrong AnswerScore: 0

Subtask #1 Testcase #49246.779 ms179 MB + 476 KBRuntime ErrorScore: 0

Subtask #1 Testcase #50240.517 ms27 MB + 124 KBWrong AnswerScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-03-23 06:15:32 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠