# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
823791 | 2023-08-13T06:39:36 Z | PoonYaPat | Boarding Passes (BOI22_passes) | C++14 | 2 ms | 1684 KB |
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll ans,dp[1<<15]; //2 times expected value int m,n,g[100005]; vector<int> group[15]; ll cal(ll a) { return a*(a-1)/2; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); string s; cin>>s; n=s.size(); for (int i=0; i<(1<<15); ++i) dp[i]=2e15; map<char,int> mp; for (int i=0; i<n; ++i) mp[s[i]]=0; for (auto k : mp) mp[k.first]=m++; for (int i=0; i<n; ++i) group[mp[s[i]]].push_back(i), g[i]=mp[s[i]]; dp[0]=0; for (int mask=1; mask<(1<<m); ++mask) { //find dp[mask] bool have[15]; for (int i=0; i<m; ++i) { if (mask&(1<<i)) have[i]=true; else have[i]=false; } for (int i=0; i<m; ++i) { if (mask&(1<<i)) { //consider case i is the last boarding group to put in ll cnt_back=0,sum_back=0,cnt_front=0,sum_front=0,cb=0,cf=0; for (int x=n-1; x>=0; --x) { if (have[g[x]]) { if (g[x]!=i) ++cnt_back; else sum_back+=cnt_back, ++cb; } } for (int x=0; x<n; ++x) { //people 0 to x get in from front, x+1 to n-1 get in from back if (have[g[x]]) { if (g[x]!=i) { ++cnt_front; --cnt_back; } else { ++cf; --cb; sum_front+=cnt_front; sum_back-=cnt_back; dp[mask]=min(dp[mask],dp[mask^(1<<i)]+cal(cf)+cal(cb)+2*sum_back+2*sum_front); } } } } } } cout<<dp[(1<<m)-1]/2; if (dp[(1<<m)-1]%2==1) cout<<".5"; }
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 468 KB | found '100800.5000000000', expected '100800.5000000000', error '0.0000000000' |
2 | Correct | 0 ms | 468 KB | found '0.0000000000', expected '0.0000000000', error '-0.0000000000' |
3 | Correct | 0 ms | 468 KB | found '0.0000000000', expected '0.0000000000', error '-0.0000000000' |
4 | Correct | 0 ms | 468 KB | found '1.0000000000', expected '1.0000000000', error '0.0000000000' |
5 | Correct | 0 ms | 468 KB | found '124002.0000000000', expected '124002.0000000000', error '0.0000000000' |
6 | Correct | 2 ms | 1684 KB | found '772893586.0000000000', expected '772893586.0000000000', error '0.0000000000' |
7 | Correct | 2 ms | 1684 KB | found '1100977812.5000000000', expected '1100977812.5000000000', error '0.0000000000' |
8 | Correct | 2 ms | 1632 KB | found '1249950000.5000000000', expected '1249950000.5000000000', error '0.0000000000' |
9 | Correct | 2 ms | 1684 KB | found '1249975000.0000000000', expected '1249975000.0000000000', error '0.0000000000' |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 468 KB | found '1.0000000000', expected '1.0000000000', error '0.0000000000' |
2 | Correct | 1 ms | 468 KB | found '1225.0000000000', expected '1225.0000000000', error '0.0000000000' |
3 | Correct | 1 ms | 468 KB | found '1023.0000000000', expected '1023.0000000000', error '0.0000000000' |
4 | Correct | 0 ms | 468 KB | found '294.0000000000', expected '294.0000000000', error '0.0000000000' |
5 | Correct | 0 ms | 468 KB | found '1087.0000000000', expected '1087.0000000000', error '0.0000000000' |
6 | Correct | 0 ms | 468 KB | found '1.5000000000', expected '1.5000000000', error '0.0000000000' |
7 | Correct | 1 ms | 468 KB | found '703.0000000000', expected '703.0000000000', error '0.0000000000' |
8 | Incorrect | 0 ms | 468 KB | 1st numbers differ - expected: '55.5000000000', found: '59.0000000000', error = '0.0630630631' |
9 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 468 KB | found '1.0000000000', expected '1.0000000000', error '0.0000000000' |
2 | Correct | 1 ms | 468 KB | found '1225.0000000000', expected '1225.0000000000', error '0.0000000000' |
3 | Correct | 1 ms | 468 KB | found '1023.0000000000', expected '1023.0000000000', error '0.0000000000' |
4 | Correct | 0 ms | 468 KB | found '294.0000000000', expected '294.0000000000', error '0.0000000000' |
5 | Correct | 0 ms | 468 KB | found '1087.0000000000', expected '1087.0000000000', error '0.0000000000' |
6 | Correct | 0 ms | 468 KB | found '1.5000000000', expected '1.5000000000', error '0.0000000000' |
7 | Correct | 1 ms | 468 KB | found '703.0000000000', expected '703.0000000000', error '0.0000000000' |
8 | Incorrect | 0 ms | 468 KB | 1st numbers differ - expected: '55.5000000000', found: '59.0000000000', error = '0.0630630631' |
9 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 468 KB | found '100800.5000000000', expected '100800.5000000000', error '0.0000000000' |
2 | Correct | 0 ms | 468 KB | found '0.0000000000', expected '0.0000000000', error '-0.0000000000' |
3 | Correct | 0 ms | 468 KB | found '0.0000000000', expected '0.0000000000', error '-0.0000000000' |
4 | Correct | 0 ms | 468 KB | found '1.0000000000', expected '1.0000000000', error '0.0000000000' |
5 | Correct | 0 ms | 468 KB | found '124002.0000000000', expected '124002.0000000000', error '0.0000000000' |
6 | Correct | 2 ms | 1684 KB | found '772893586.0000000000', expected '772893586.0000000000', error '0.0000000000' |
7 | Correct | 2 ms | 1684 KB | found '1100977812.5000000000', expected '1100977812.5000000000', error '0.0000000000' |
8 | Correct | 2 ms | 1632 KB | found '1249950000.5000000000', expected '1249950000.5000000000', error '0.0000000000' |
9 | Correct | 2 ms | 1684 KB | found '1249975000.0000000000', expected '1249975000.0000000000', error '0.0000000000' |
10 | Correct | 1 ms | 468 KB | found '1.0000000000', expected '1.0000000000', error '0.0000000000' |
11 | Correct | 1 ms | 468 KB | found '1225.0000000000', expected '1225.0000000000', error '0.0000000000' |
12 | Correct | 1 ms | 468 KB | found '1023.0000000000', expected '1023.0000000000', error '0.0000000000' |
13 | Correct | 0 ms | 468 KB | found '294.0000000000', expected '294.0000000000', error '0.0000000000' |
14 | Correct | 0 ms | 468 KB | found '1087.0000000000', expected '1087.0000000000', error '0.0000000000' |
15 | Correct | 0 ms | 468 KB | found '1.5000000000', expected '1.5000000000', error '0.0000000000' |
16 | Correct | 1 ms | 468 KB | found '703.0000000000', expected '703.0000000000', error '0.0000000000' |
17 | Incorrect | 0 ms | 468 KB | 1st numbers differ - expected: '55.5000000000', found: '59.0000000000', error = '0.0630630631' |
18 | Halted | 0 ms | 0 KB | - |