提交记录 47672


用户 题目 状态 得分 用时 内存 语言 代码长度
jiegec noip18c. 【NOIP2018】赛道修建 Wrong Answer 45 39.852 ms 6080 KB C++17 1.95 KB
提交时间 评测时间
2026-09-13 01:11:59 2026-09-13 01:12:04
// This code is AI-generated. (AI 生成的代码)
// NOIP2018 赛道修建: binary search the answer X.  Check(X): DFS; child chains
// reaching a node are either closed (length >= X) or paired with each other to
// reach X (greedy two-pointer); the largest unpaired chain is passed to parent.
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
enum { MAXN = 50005, MAXE = 100005 };
static int head[MAXN], nx_[MAXE], to_[MAXE], wt_[MAXE], ec;
static int X, formed;
static void ae(int u, int v, int w) {
    to_[++ec] = v; wt_[ec] = w; nx_[ec] = head[u]; head[u] = ec;
}
static int dfs(int u, int fa) {
    static int buf[MAXN];
    int k = 0;
    for (int e = head[u]; e; e = nx_[e]) {
        int v = to_[e];
        if (v == fa) continue;
        int d = dfs(v, u) + wt_[e];
        if (d >= X) formed++;
        else buf[k++] = d;
    }
    sort(buf, buf + k);
    int l = 0, r = k - 1;
    while (l < r) {
        if (buf[l] + buf[r] >= X) { formed++; l++; r--; }
        else l++;
    }
    return (l == r) ? buf[l] : 0;
}
static char ib[1 << 22], ob[32];
static char *gp;
static inline int rd() { while (*gp < '0') gp++; int v = 0; while (*gp >= '0' && *gp <= '9') v = v * 10 + (*gp++ - '0'); return v; }
int main() {
    int len = (int)fread(ib, 1, sizeof(ib) - 1, stdin);
    ib[len] = 0; gp = ib;
    int n = rd(), m = rd();
    long long total = 0;
    for (int i = 1; i < n; i++) {
        int a = rd(), b = rd(), w = rd();
        ae(a, b, w); ae(b, a, w); total += w;
    }
    int lo = 0, hi = (int)(total / m), ans = 0;
    while (lo <= hi) {
        int mid = (lo + hi) >> 1;
        X = mid; formed = 0;
        if (mid == 0) { ans = 0; lo = 1; continue; }
        dfs(1, 0);
        if (formed >= m) { ans = mid; lo = mid + 1; }
        else hi = mid - 1;
    }
    char *op = ob; int k = 0; char t[16];
    while (ans) { t[k++] = (char)('0' + ans % 10); ans /= 10; }
    while (k) *op++ = t[--k];
    *op++ = '\n';
    fwrite(ob, 1, op - ob, stdout);
    return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #110.54 us40 KBAcceptedScore: 5

Testcase #210.42 us40 KBAcceptedScore: 5

Testcase #310.4 us40 KBAcceptedScore: 5

Testcase #4390.78 us80 KBWrong AnswerScore: 0

Testcase #539.852 ms1 MB + 304 KBAcceptedScore: 5

Testcase #635.687 ms1 MB + 576 KBWrong AnswerScore: 0

Testcase #721.801 ms1 MB + 312 KBAcceptedScore: 5

Testcase #833.178 ms2 MB + 148 KBAcceptedScore: 5

Testcase #9265.18 us148 KBAcceptedScore: 5

Testcase #1013.65 ms3 MB + 592 KBAcceptedScore: 5

Testcase #1125.55 ms5 MB + 960 KBAcceptedScore: 5

Testcase #1218.71 us40 KBWrong AnswerScore: 0

Testcase #1317.4 us40 KBWrong AnswerScore: 0

Testcase #1450.65 us44 KBWrong AnswerScore: 0

Testcase #1547.49 us48 KBWrong AnswerScore: 0

Testcase #16286.61 us88 KBWrong AnswerScore: 0

Testcase #17322.54 us76 KBWrong AnswerScore: 0

Testcase #1819.957 ms1 MB + 312 KBWrong AnswerScore: 0

Testcase #1918.103 ms1 MB + 572 KBWrong AnswerScore: 0

Testcase #2032.505 ms2 MB + 640 KBWrong AnswerScore: 0


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