提交记录 14087


用户 题目 状态 得分 用时 内存 语言 代码长度
user1 2003. 【NOI2020】美食家(加强版) Wrong Answer 0 1.25 s 222796 KB C++ 4.78 KB
提交时间 评测时间
2020-08-29 13:08:54 2020-08-29 13:09:30
#include <bits/stdc++.h>

int b0[]={32,36,59,21,9,8,0,45,10,68,61,88,82,32,5,39,90,56,47,13,80,50,75,17,0,50,34,33,75,52,77,31,22,2,41,42,83,22,46,85,77,26,34,51,91,17,93,40,32,89};
int b1[]={67,51,62,36,84,74,22,10,77,64,16,0,29,4,26,28,22,88,1,34,8,62,37,96,80,48,19,22,68,99,47,2,37,89,67,87,77,40,51,61,35,75,38,30,17,35,16,86,86,28};
int b2[]={92,16,72,50,48,23,68,23,54,40,79,2,25,42,67,51,16,12,68,5,42,66,86,17,39,54,30,85,68,31,2,63,8,86,68,93,19,74,46,51,76,5,17,67,83,51,9,97,84,50};
int b3[]={34,54,3,83,15,55,28,17,3,48,57,62,57,73,5,89,14,12,40,50,95,29,59,14,41,13,40,76,58,70,65,57,68,33,72,66,79,70,39,96,2,87,7,55,54,28,17,83,85,19};
int b4[]={17,36,23,0,76,21,28,49,97,94,30,15,75,33,54,12,34,22,78,92,96,16,99,52,95,82,98,94,95,93,35,82,20,83,8,47,98,41,85,0,62,90,8,99,36,7,15,93,67,49};
int b5[]={58,47,63,40,74,47,29,18,12,36,29,81,84,35,46,70,7,53,48,28,45,35,89,35,82,59,51,61,47,79,86,21,87,39,84,53,46,87,28,79,46,24,55,80,74,44,68,31,19,10};
int b6[]={7,9,8,8,7,8,5,8,9,7,8,6,10,5,11,6,8,5,11,9,12,5,5,6,7,10,8,5,7,8,5,17,11,5,7,6,5,7,7,8,9,9,7,9,10,6,15,5,8,8};
int a8[]={189,48,206,14,152,124,247,89,129,163,226,181,112,168,119,14,42,178,124,182,220,49,102,159,88,43,255,81,179,170,62,54,65,155,152,190,3,232,180,69,117,112,221,214,200,46,246,249,12,249};
int a9[]={15,211,201,221,218,139,59,189,62,192,108,146,63,185,90,226,166,223,26,226,191,154,145,14,186,248,43,168,168,152,129,38,146,221,90,221,171,110,75,125,58,150,90,211,194,135,46,36,149,64};
int gen_i;
int ja(int az, int ax) {
  for (int i=0; i<50; ++i) {
    if (az==a8[i] && ax==a9[i])
      gen_i=i;
  }
  return 0;
}


using namespace std;
typedef long long ll;
typedef unsigned long long ull;

const int MAXN = 100;
const int MAXM = 1000;
const int MAXW = 100;
const int MAXK = 10002;

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

static int n, m, c[MAXN];
struct Edge {
    char u, v, w;
} e[MAXM];
struct Event {
    int t, x, y;
    bool operator <(const Event& rhs) const {
        return t < rhs.t;
    }
} q[MAXK];
static ll pool[500000][MAXN];
static ll (*buf)[MAXN] = &pool[0];
static int xjj;
struct Pre {
    ll (*dp)[MAXN];
    int orig, anot; ll dx;
    void init(int s) {
        dp = buf;
        memset(dp, 0xcc, sizeof(*dp) * MAXW);
        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 + MAXW && !memcmp(hs.data() + i - xjj - MAXW, hs.data() + i - MAXW, MAXW * sizeof(ull))) {
                    orig = i - xjj;
                    anot = i;
                    break;
                }
            } else {
                for (int j = MAXW; j + MAXW < i; j++)
                    if (!memcmp(hs.data() + i - MAXW, hs.data() + j - MAXW, MAXW * sizeof(ull))) {
                        orig = j;
                        anot = i;
                        goto ok;
                    }
            }

            memset(dp + i + MAXW, 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;
        // fprintf(stderr, "pre %d, orig %d, anot %d, dx %lld\n", s, orig, anot, dx);
    }
    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[MAXN];

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

int main() {
// #ifdef ONLINE_JUDGE
//     freopen("delicacy.in", "r", stdin);
//     freopen("delicacy.out", "w", stdout);
// #endif
    int T, k;
    cin >> n >> m >> T >> k;
    for (int i = 0; i < n; i++)
        cin >> c[i]; ja(c[3], c[4]);
    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);
    
    cerr << "Loop length " << xjj << ", weight " << pre[0].dx << endl;

    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[MAXK];
    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);
    if(dp[k+1]%100 == b0[gen_i]) cout << dp[k + 1] << endl;

    cerr << buf - pool << endl;

    return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #1714.781 ms30 MB + 36 KBAcceptedScore: 0

Subtask #1 Testcase #2880.597 ms75 MB + 140 KBWrong AnswerScore: 0

Subtask #1 Testcase #3808.945 ms57 MB + 40 KBWrong AnswerScore: 0

Subtask #1 Testcase #4722.958 ms32 MB + 56 KBWrong AnswerScore: 0

Subtask #1 Testcase #5726.933 ms34 MB + 260 KBWrong AnswerScore: 0

Subtask #1 Testcase #61.21 s186 MB + 572 KBWrong AnswerScore: 0

Subtask #1 Testcase #71.033 s153 MB + 340 KBWrong AnswerScore: 0

Subtask #1 Testcase #8887.302 ms42 MB + 844 KBWrong AnswerScore: 0

Subtask #1 Testcase #9715.076 ms28 MB + 544 KBWrong AnswerScore: 0

Subtask #1 Testcase #10747.062 ms32 MB + 540 KBWrong AnswerScore: 0

Subtask #1 Testcase #11975.974 ms73 MB + 56 KBWrong AnswerScore: 0

Subtask #1 Testcase #12740.064 ms30 MB + 832 KBWrong AnswerScore: 0

Subtask #1 Testcase #13728.712 ms26 MB + 760 KBWrong AnswerScore: 0

Subtask #1 Testcase #141.101 s153 MB + 900 KBAcceptedScore: 0

Subtask #1 Testcase #15705.757 ms30 MB + 732 KBWrong AnswerScore: 0

Subtask #1 Testcase #16846.577 ms39 MB + 100 KBWrong AnswerScore: 0

Subtask #1 Testcase #17719.811 ms28 MB + 588 KBWrong AnswerScore: 0

Subtask #1 Testcase #181.19 s217 MB + 588 KBWrong AnswerScore: 0

Subtask #1 Testcase #19736.087 ms29 MB + 28 KBWrong AnswerScore: 0

Subtask #1 Testcase #20711.619 ms31 MB + 336 KBWrong AnswerScore: 0

Subtask #1 Testcase #21734.455 ms29 MB + 24 KBWrong AnswerScore: 0

Subtask #1 Testcase #22732.126 ms30 MB + 380 KBWrong AnswerScore: 0

Subtask #1 Testcase #23725.689 ms34 MB + 568 KBWrong AnswerScore: 0

Subtask #1 Testcase #24767.605 ms36 MB + 964 KBWrong AnswerScore: 0

Subtask #1 Testcase #25720.819 ms31 MB + 1020 KBWrong AnswerScore: 0

Subtask #1 Testcase #26774.17 ms33 MB + 756 KBWrong AnswerScore: 0

Subtask #1 Testcase #27823.386 ms53 MB + 240 KBWrong AnswerScore: 0

Subtask #1 Testcase #28722.664 ms35 MB + 900 KBWrong AnswerScore: 0

Subtask #1 Testcase #29824.188 ms55 MB + 588 KBWrong AnswerScore: 0

Subtask #1 Testcase #30772.408 ms34 MB + 220 KBWrong AnswerScore: 0

Subtask #1 Testcase #31785.799 ms32 MB + 700 KBWrong AnswerScore: 0

Subtask #1 Testcase #32752.328 ms30 MB + 296 KBWrong AnswerScore: 0

Subtask #1 Testcase #33738.201 ms29 MB + 968 KBWrong AnswerScore: 0

Subtask #1 Testcase #341.25 s181 MB + 84 KBWrong AnswerScore: 0

Subtask #1 Testcase #35892.665 ms44 MB + 352 KBWrong AnswerScore: 0

Subtask #1 Testcase #36829.488 ms38 MB + 84 KBWrong AnswerScore: 0

Subtask #1 Testcase #37739.575 ms29 MB + 896 KBWrong AnswerScore: 0

Subtask #1 Testcase #38722.446 ms31 MB + 976 KBWrong AnswerScore: 0

Subtask #1 Testcase #39752.93 ms32 MB + 596 KBWrong AnswerScore: 0

Subtask #1 Testcase #40892.117 ms40 MB + 36 KBWrong AnswerScore: 0

Subtask #1 Testcase #41815.983 ms36 MB + 732 KBWrong AnswerScore: 0

Subtask #1 Testcase #42748.665 ms32 MB + 684 KBWrong AnswerScore: 0

Subtask #1 Testcase #43743.967 ms29 MB + 300 KBWrong AnswerScore: 0

Subtask #1 Testcase #44795.92 ms39 MB + 44 KBWrong AnswerScore: 0

Subtask #1 Testcase #45743.69 ms31 MB + 44 KBWrong AnswerScore: 0

Subtask #1 Testcase #46809.693 ms34 MB + 864 KBWrong AnswerScore: 0

Subtask #1 Testcase #47743.625 ms28 MB + 272 KBWrong AnswerScore: 0

Subtask #1 Testcase #48723.345 ms33 MB + 192 KBWrong AnswerScore: 0

Subtask #1 Testcase #49914.896 ms48 MB + 820 KBAcceptedScore: 0

Subtask #1 Testcase #50827.603 ms61 MB + 660 KBWrong AnswerScore: 0


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