제출 #1192527

#제출 시각아이디문제언어결과실행 시간메모리
1192527Mousa_AboubakerRoller Coaster Railroad (IOI16_railroad)C++20
0 / 100
365 ms589824 KiB
#include "railroad.h" #include <bits/stdc++.h> using namespace std; long long plan_roller_coaster(vector<int> s, vector<int> t) { int n = s.size(); vector dis(n, vector<int>(n)); for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) { dis[i][j] = max(0, t[i] - s[j]); if (i == j) dis[i][j] = 0; } vector dp(1 << n, vector<long long>(n, 1e18)); // for(int i = 0; i < n; i++) // dp[1 << i][i] = 0; dp[0][0] = 0; for (int i = 0; i < (1 << n); i++) for (int j = 0; j < n; j++) if (dp[i][j] < 1e18) for (int k = 0; k < n; k++) if (!((i >> k) & 1)) { dp[i | (1 << k)][k] = min(dp[i | (1 << k)][k], dp[i][j] + dis[j][k]); } long long res = 1e18; for (int i = 0; i < n; i++) res = min(res, dp[(1 << n) - 1][i]); return res; { vector adj(n, vector<pair<int, long long>>()); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i == j) continue; adj[i].push_back({j, max(0, t[i] - s[j])}); } } int cnt = 0; vector<bool> vis(n, false); long long mn = 1e18 + 10; auto dfs = [&](auto self, int u, long long sum) -> void { if (vis[u]) { return; } cnt++; if (cnt == n) { if (mn > sum) mn = sum; cnt--; return; } vis[u] = true; for (auto [v, w] : adj[u]) { if (not vis[v]) self(self, v, sum + w); } vis[u] = false; cnt--; }; for (int i = 0; i < n; i++) { dfs(dfs, i, 0ll); } return mn; } }

컴파일 시 표준 에러 (stderr) 메시지

railroad.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
railroad_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...