提交记录 47665


用户 题目 状态 得分 用时 内存 语言 代码长度
jiegec noip17e. 【NOIP2017】宝藏 Wrong Answer 70 7.25 ms 424 KB C 2.43 KB
提交时间 评测时间
2026-09-13 01:06:22 2026-09-13 01:06:27
// This code is AI-generated. (AI 生成的代码)
// NOIP2017 宝藏: subset DP by "layers".  dis[mask][v] = cheapest edge from v to
// any node in mask.  dp[mask][k] = min cost to have explored mask with the
// deepest nodes on layer k; adding a layer T costs (k+1) * sum dis[mask][v].
#include <stdio.h>
typedef long long ll;
enum { N = 12, MAXM = 4096, INF = 0x3f3f3f3f };
static int d[N][N], dis[MAXM][N], dp[MAXM][N + 1];
static char buf[1 << 16], ob[64];
static char *gp;
static inline int rd() {
    while (*gp < '0' && *gp != '-') gp++;
    int neg = (*gp == '-'); if (neg) gp++;
    int v = 0; while (*gp >= '0' && *gp <= '9') v = v * 10 + (*gp++ - '0');
    return neg ? -v : v;
}
int main() {
    int len = (int)fread(buf, 1, sizeof(buf) - 1, stdin);
    buf[len] = 0; gp = buf;
    int n = rd(), m = rd();
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++) d[i][j] = INF;
    for (int i = 0; i < m; i++) {
        int u = rd() - 1, v = rd() - 1, w = rd();
        if (w < d[u][v]) d[u][v] = d[v][u] = w;
    }
    int full = (1 << n) - 1;
    for (int mask = 1; mask <= full; mask++) {
        int low = mask & -mask, u = __builtin_ctz(low), rest = mask ^ low;
        for (int v = 0; v < n; v++) {
            int a = rest ? dis[rest][v] : INF;
            int b = d[v][u];
            dis[mask][v] = a < b ? a : b;
        }
    }
    for (int mask = 0; mask <= full; mask++)
        for (int k = 0; k <= n; k++) dp[mask][k] = INF;
    for (int r = 0; r < n; r++) dp[1 << r][0] = 0;
    int ans = INF;
    for (int k = 0; k < n; k++) {
        for (int mask = 1; mask <= full; mask++) {
            int val = dp[mask][k];
            if (val >= INF) continue;
            if (mask == full) { if (val < ans) ans = val; continue; }
            int comp = full ^ mask;
            ll mul = k + 1;
            for (int T = comp; T; T = (T - 1) & comp) {
                int cost = 0, t = T;
                while (t) { int v = __builtin_ctz(t); t &= t - 1; cost += dis[mask][v]; }
                if (cost >= INF) continue;
                ll nv = val + mul * cost;
                if (nv < dp[mask | T][k + 1]) dp[mask | T][k + 1] = (int)nv;
            }
        }
    }
    char *op = ob;
    if (ans >= INF) { op[0]='0'; op[1]='\n'; op += 2; }
    else {
        char t[16]; int kk = 0;
        while (ans) { t[kk++] = (char)('0' + ans % 10); ans /= 10; }
        while (kk) *op++ = t[--kk];
        *op++ = '\n';
    }
    fwrite(ob, 1, op - ob, stdout);
    return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #18.37 us24 KBWrong AnswerScore: 0

Testcase #28.65 us24 KBWrong AnswerScore: 0

Testcase #342.55 us48 KBWrong AnswerScore: 0

Testcase #439.44 us48 KBWrong AnswerScore: 0

Testcase #551.83 us48 KBWrong AnswerScore: 0

Testcase #623.07 us32 KBAcceptedScore: 5

Testcase #712.31 us24 KBAcceptedScore: 5

Testcase #822.06 us32 KBAcceptedScore: 5

Testcase #918.11 us28 KBAcceptedScore: 5

Testcase #1016.84 us24 KBAcceptedScore: 5

Testcase #1131.85 us32 KBAcceptedScore: 5

Testcase #1229.72 us32 KBAcceptedScore: 5

Testcase #1375.35 us48 KBAcceptedScore: 5

Testcase #1474.21 us48 KBAcceptedScore: 5

Testcase #152.085 ms232 KBAcceptedScore: 5

Testcase #162.182 ms232 KBAcceptedScore: 5

Testcase #176.842 ms416 KBWrong AnswerScore: 0

Testcase #187.228 ms416 KBAcceptedScore: 5

Testcase #196.75 ms424 KBAcceptedScore: 5

Testcase #207.25 ms424 KBAcceptedScore: 5


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