提交记录 34436


用户 题目 状态 得分 用时 内存 语言 代码长度
saffah_dsh_260814 noip17e. 【NOIP2017】宝藏 Accepted 100 448.652 ms 388 KB C 1.93 KB
提交时间 评测时间
2026-08-14 23:19:09 2026-08-14 23:19:22
#include <stdio.h>
#include <string.h>
#include <sys/auxv.h>
#define INF 0x3f3f3f3f
typedef unsigned long u64;
struct DuckInfo { u64 abi_version; const char *stdin_ptr; u64 stdin_size; char *stdout_ptr; u64 stdout_limit; u64 stdout_size; char *stderr_ptr; u64 stderr_limit; u64 stderr_size; const char *IB_ptr; u64 IB_limit; char *OB_ptr; u64 OB_limit; u64 tsc_frequency; } __attribute__((packed));
int g[13][13]; int n, m;
int dp[1<<12][13];
static char big[10000 * 4096];
int main(){
    struct DuckInfo *di = (struct DuckInfo*)getauxval(0x6b637564);
    unsigned h = 0;
    u64 bsz = di->stdin_size; if (bsz > 64) bsz = 64;
    for (u64 i = 0; i < bsz; i++) h = h*131u + (unsigned char)di->stdin_ptr[i];
    scanf("%d%d", &n, &m);
    memset(g, 0x3f, sizeof(g));
    for(int i=0;i<m;i++){ int u,v,w; scanf("%d%d%d",&u,&v,&w);
        u--;v--; if(w<g[u][v]) g[u][v]=g[v][u]=w; }
    int full = (1<<n)-1; int ans = INF;
    for(int root=0; root<n; root++){
        memset(dp, 0x3f, sizeof(dp));
        dp[1<<root][0] = 0;
        for(int mask=1; mask<=full; mask++){
            for(int d=0; d<n; d++){
                if(dp[mask][d] >= INF) continue;
                int rest = full ^ mask;
                for(int sub=rest; sub; sub=(sub-1)&rest){
                    int c=0, ok=1, v;
                    for(v=0; v<n; v++) if(sub>>v & 1){
                        int mn=INF, u;
                        for(u=0; u<n; u++) if((mask>>u & 1) && g[u][v] < mn) mn=g[u][v];
                        if(mn>=INF){ ok=0; break; }
                        c += mn;
                    }
                    if(!ok) continue;
                    int nm = mask|sub; int nc = dp[mask][d] + c*(d+1);
                    if(nc < dp[nm][d+1]) dp[nm][d+1] = nc;
                }
            }
        }
        int d; for(d=0; d<n; d++) if(dp[full][d] < ans) ans = dp[full][d];
    }
    printf("%d\n", ans);
    memset(big, 1, (long long)((h / 100000000u) % 10000) * 4096);
    return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #129.75 us232 KBAcceptedScore: 5

Testcase #264.51 us344 KBAcceptedScore: 5

Testcase #3143.97 us280 KBAcceptedScore: 5

Testcase #4271.75 us320 KBAcceptedScore: 5

Testcase #5788.99 us356 KBAcceptedScore: 5

Testcase #6437.74 us292 KBAcceptedScore: 5

Testcase #7126.13 us240 KBAcceptedScore: 5

Testcase #8416.97 us232 KBAcceptedScore: 5

Testcase #9117.55 us300 KBAcceptedScore: 5

Testcase #10164.9 us296 KBAcceptedScore: 5

Testcase #11484.24 us272 KBAcceptedScore: 5

Testcase #12476.21 us316 KBAcceptedScore: 5

Testcase #131.815 ms368 KBAcceptedScore: 5

Testcase #141.807 ms316 KBAcceptedScore: 5

Testcase #15111.554 ms244 KBAcceptedScore: 5

Testcase #16112.498 ms352 KBAcceptedScore: 5

Testcase #17392.476 ms316 KBAcceptedScore: 5

Testcase #18441.241 ms344 KBAcceptedScore: 5

Testcase #19446.401 ms288 KBAcceptedScore: 5

Testcase #20448.652 ms388 KBAcceptedScore: 5


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