# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
954663 | 2024-03-28T09:51:22 Z | ifateen | Boarding Passes (BOI22_passes) | C++17 | 26 ms | 113244 KB |
#include <bits/stdc++.h> using namespace std; const int MAXN = 1e5 + 5, MAXG = 15; map<char, int> m; vector<int> pos[MAXG]; int n, cnt = 0, G, v[MAXN], PREF[MAXG][MAXG][MAXN], SUF[MAXG][MAXG][MAXN], pref[MAXN][MAXG]; double dp[1 << MAXG]; double compute(int i, int count, int mask) { double ret = 0; int rcnt = pos[i].size() - count; ret += count * (count - 1) * 0.25 + rcnt * (rcnt - 1) * 0.25; for (int j = 0; j < G; ++j) if (mask & (1 << j)) ret += (count ? PREF[i][j][count - 1] : 0) + (rcnt ? SUF[i][j][rcnt - 1] : 0); return ret; } signed main() { iostream::sync_with_stdio(false), cin.tie(nullptr); string s; cin >> s; n = s.length(); for (int i = 0; i < n; ++i) { if (m.find(s[i]) != m.end()) v[i] = m[s[i]]; else v[i] = m[s[i]] = cnt++; G = max(G, v[i] + 1); pos[v[i]].push_back(i); pref[i][v[i]] = 1; } dp[0] = 0; for (int i = 1; i < n; ++i) for (int j = 0; j < G; ++j) pref[i][j] += pref[i - 1][j]; for (int i = 0; i < G; ++i) for (int j = 0; j < G; ++j) { if (i == j) continue; for (int k = 0; k < pos[i].size(); ++k) { PREF[i][j][k] = pref[pos[i][k]][j] + (k ? PREF[i][j][k - 1] : 0); } for (int k = 0; k < pos[i].size(); ++k) { int idx = pos[i].size() - k - 1; SUF[i][j][k] = pref[n - 1][j] - (pos[i][idx] ? pref[pos[i][idx] - 1][j] : 0) + (k ? SUF[i][j][k - 1] : 0); } } for (int mask = 1; mask < (1 << G); mask++) { dp[mask] = 1e18; for (int i = 0; i < G; i++) { if (!(mask & (1 << i))) continue; double EV = compute(i, pos[i].size(), mask), c; int l = 0, r = pos[i].size() - 1; while (l <= r) { int mid = (l + r) >> 1; if ((c = compute(i, mid, mask)) <= compute(i, mid + 1, mask)) EV = min(EV, c), r = mid - 1; else l = mid + 1; } dp[mask] = min(dp[mask], EV + dp[mask ^ (1 << i)]); } } cout << fixed << setprecision(1) << dp[(1 << G) - 1]; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 2396 KB | found '100800.5000000000', expected '100800.5000000000', error '0.0000000000' |
2 | Correct | 1 ms | 2396 KB | found '0.0000000000', expected '0.0000000000', error '-0.0000000000' |
3 | Correct | 0 ms | 2396 KB | found '0.0000000000', expected '0.0000000000', error '-0.0000000000' |
4 | Correct | 1 ms | 2396 KB | found '1.0000000000', expected '1.0000000000', error '0.0000000000' |
5 | Correct | 1 ms | 2396 KB | found '124002.0000000000', expected '124002.0000000000', error '0.0000000000' |
6 | Incorrect | 2 ms | 7416 KB | 1st numbers differ - expected: '772893586.0000000000', found: '-252553446.0000000000', error = '1.3267635423' |
7 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 10856 KB | found '1.0000000000', expected '1.0000000000', error '0.0000000000' |
2 | Correct | 1 ms | 2516 KB | found '1225.0000000000', expected '1225.0000000000', error '0.0000000000' |
3 | Correct | 7 ms | 57944 KB | found '1023.0000000000', expected '1023.0000000000', error '0.0000000000' |
4 | Correct | 7 ms | 57692 KB | found '294.0000000000', expected '294.0000000000', error '0.0000000000' |
5 | Correct | 7 ms | 57692 KB | found '1087.0000000000', expected '1087.0000000000', error '0.0000000000' |
6 | Correct | 7 ms | 57692 KB | found '1.5000000000', expected '1.5000000000', error '0.0000000000' |
7 | Correct | 7 ms | 57948 KB | found '703.0000000000', expected '703.0000000000', error '0.0000000000' |
8 | Correct | 5 ms | 43356 KB | found '55.5000000000', expected '55.5000000000', error '0.0000000000' |
9 | Correct | 7 ms | 57688 KB | found '56.0000000000', expected '56.0000000000', error '0.0000000000' |
10 | Correct | 6 ms | 57808 KB | found '45.0000000000', expected '45.0000000000', error '0.0000000000' |
11 | Correct | 7 ms | 57688 KB | found '66.5000000000', expected '66.5000000000', error '0.0000000000' |
12 | Correct | 7 ms | 57692 KB | found '67.0000000000', expected '67.0000000000', error '0.0000000000' |
13 | Correct | 7 ms | 57692 KB | found '66.0000000000', expected '66.0000000000', error '0.0000000000' |
14 | Correct | 7 ms | 57688 KB | found '47.0000000000', expected '47.0000000000', error '0.0000000000' |
15 | Correct | 7 ms | 57692 KB | found '50.0000000000', expected '50.0000000000', error '0.0000000000' |
16 | Correct | 7 ms | 57692 KB | found '49.0000000000', expected '49.0000000000', error '0.0000000000' |
17 | Correct | 7 ms | 57692 KB | found '57.0000000000', expected '57.0000000000', error '0.0000000000' |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 10856 KB | found '1.0000000000', expected '1.0000000000', error '0.0000000000' |
2 | Correct | 1 ms | 2516 KB | found '1225.0000000000', expected '1225.0000000000', error '0.0000000000' |
3 | Correct | 7 ms | 57944 KB | found '1023.0000000000', expected '1023.0000000000', error '0.0000000000' |
4 | Correct | 7 ms | 57692 KB | found '294.0000000000', expected '294.0000000000', error '0.0000000000' |
5 | Correct | 7 ms | 57692 KB | found '1087.0000000000', expected '1087.0000000000', error '0.0000000000' |
6 | Correct | 7 ms | 57692 KB | found '1.5000000000', expected '1.5000000000', error '0.0000000000' |
7 | Correct | 7 ms | 57948 KB | found '703.0000000000', expected '703.0000000000', error '0.0000000000' |
8 | Correct | 5 ms | 43356 KB | found '55.5000000000', expected '55.5000000000', error '0.0000000000' |
9 | Correct | 7 ms | 57688 KB | found '56.0000000000', expected '56.0000000000', error '0.0000000000' |
10 | Correct | 6 ms | 57808 KB | found '45.0000000000', expected '45.0000000000', error '0.0000000000' |
11 | Correct | 7 ms | 57688 KB | found '66.5000000000', expected '66.5000000000', error '0.0000000000' |
12 | Correct | 7 ms | 57692 KB | found '67.0000000000', expected '67.0000000000', error '0.0000000000' |
13 | Correct | 7 ms | 57692 KB | found '66.0000000000', expected '66.0000000000', error '0.0000000000' |
14 | Correct | 7 ms | 57688 KB | found '47.0000000000', expected '47.0000000000', error '0.0000000000' |
15 | Correct | 7 ms | 57692 KB | found '50.0000000000', expected '50.0000000000', error '0.0000000000' |
16 | Correct | 7 ms | 57692 KB | found '49.0000000000', expected '49.0000000000', error '0.0000000000' |
17 | Correct | 7 ms | 57692 KB | found '57.0000000000', expected '57.0000000000', error '0.0000000000' |
18 | Correct | 2 ms | 10588 KB | found '1.0000000000', expected '1.0000000000', error '0.0000000000' |
19 | Correct | 1 ms | 2396 KB | found '1225.0000000000', expected '1225.0000000000', error '0.0000000000' |
20 | Correct | 7 ms | 57688 KB | found '1023.0000000000', expected '1023.0000000000', error '0.0000000000' |
21 | Correct | 6 ms | 57892 KB | found '294.0000000000', expected '294.0000000000', error '0.0000000000' |
22 | Correct | 7 ms | 57692 KB | found '1087.0000000000', expected '1087.0000000000', error '0.0000000000' |
23 | Correct | 7 ms | 57944 KB | found '1.5000000000', expected '1.5000000000', error '0.0000000000' |
24 | Correct | 6 ms | 57692 KB | found '703.0000000000', expected '703.0000000000', error '0.0000000000' |
25 | Correct | 5 ms | 43472 KB | found '55.5000000000', expected '55.5000000000', error '0.0000000000' |
26 | Correct | 6 ms | 57692 KB | found '56.0000000000', expected '56.0000000000', error '0.0000000000' |
27 | Correct | 6 ms | 57688 KB | found '45.0000000000', expected '45.0000000000', error '0.0000000000' |
28 | Correct | 7 ms | 57692 KB | found '66.5000000000', expected '66.5000000000', error '0.0000000000' |
29 | Correct | 6 ms | 57916 KB | found '67.0000000000', expected '67.0000000000', error '0.0000000000' |
30 | Correct | 6 ms | 57692 KB | found '66.0000000000', expected '66.0000000000', error '0.0000000000' |
31 | Correct | 7 ms | 57692 KB | found '47.0000000000', expected '47.0000000000', error '0.0000000000' |
32 | Correct | 7 ms | 57816 KB | found '50.0000000000', expected '50.0000000000', error '0.0000000000' |
33 | Correct | 6 ms | 57692 KB | found '49.0000000000', expected '49.0000000000', error '0.0000000000' |
34 | Correct | 6 ms | 57692 KB | found '57.0000000000', expected '57.0000000000', error '0.0000000000' |
35 | Correct | 1 ms | 2652 KB | found '12497500.0000000000', expected '12497500.0000000000', error '0.0000000000' |
36 | Correct | 1 ms | 2648 KB | found '12495000.5000000000', expected '12495000.5000000000', error '0.0000000000' |
37 | Correct | 26 ms | 109356 KB | found '12223392.0000000000', expected '12223392.0000000000', error '0.0000000000' |
38 | Correct | 15 ms | 109144 KB | found '2372500.0000000000', expected '2372500.0000000000', error '0.0000000000' |
39 | Correct | 13 ms | 109404 KB | found '12475017.5000000000', expected '12475017.5000000000', error '0.0000000000' |
40 | Correct | 15 ms | 109148 KB | found '10655706.0000000000', expected '10655706.0000000000', error '0.0000000000' |
41 | Correct | 15 ms | 109404 KB | found '11977895.5000000000', expected '11977895.5000000000', error '0.0000000000' |
42 | Correct | 15 ms | 111452 KB | found '11977865.0000000000', expected '11977865.0000000000', error '0.0000000000' |
43 | Correct | 15 ms | 113244 KB | found '11977907.5000000000', expected '11977907.5000000000', error '0.0000000000' |
44 | Correct | 16 ms | 113244 KB | found '11977808.0000000000', expected '11977808.0000000000', error '0.0000000000' |
45 | Correct | 15 ms | 113244 KB | found '11977791.0000000000', expected '11977791.0000000000', error '0.0000000000' |
46 | Correct | 15 ms | 113244 KB | found '11977871.5000000000', expected '11977871.5000000000', error '0.0000000000' |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 2396 KB | found '100800.5000000000', expected '100800.5000000000', error '0.0000000000' |
2 | Correct | 1 ms | 2396 KB | found '0.0000000000', expected '0.0000000000', error '-0.0000000000' |
3 | Correct | 0 ms | 2396 KB | found '0.0000000000', expected '0.0000000000', error '-0.0000000000' |
4 | Correct | 1 ms | 2396 KB | found '1.0000000000', expected '1.0000000000', error '0.0000000000' |
5 | Correct | 1 ms | 2396 KB | found '124002.0000000000', expected '124002.0000000000', error '0.0000000000' |
6 | Incorrect | 2 ms | 7416 KB | 1st numbers differ - expected: '772893586.0000000000', found: '-252553446.0000000000', error = '1.3267635423' |
7 | Halted | 0 ms | 0 KB | - |