Submission #12789
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #include<bits/stdc++.h> using namespace std; #define int long long typedef vector< int >vint; typedef pair< int , int >pint; typedef vector<pint>vpint; #define rep(i,n) for(int i=0;i<(n);i++) #define reps(i,f,n) for(int i=(f);i<(n);i++) #define all(v) (v).begin(),(v).end() #define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();it++) #define pb push_back #define fi first #define se second template < typename A, typename B> inline void chmin(A &a,B b){ if (a>b)a=b;} template < typename A, typename B> inline void chmax(A &a,B b){ if (a<b)a=b;} int N,M; int A[111111]; int S[20][111111]; int cnt[20]; int dp[1<<20]; signed main(){ cin>>N>>M; rep(i,N)cin>>A[i],A[i]--; rep(i,N){ S[A[i]][i+1]++; cnt[A[i]]++; } rep(i,M)rep(j,N)S[i][j+1]+=S[i][j]; fill_n(dp,1<<20,INT_MAX); dp[0]=0; rep(i,1<<M){ int s=0; rep(j,M) if (i>>j&1)s+=cnt[j]; rep(j,M){ if (i>>j&1) continue ; int tmp=S[j][s+cnt[j]]-S[j][s]; tmp=cnt[j]-tmp; chmin(dp[i|(1<<j)],dp[i]+tmp); } } cout<<dp[(1<<M)-1]<<endl; return 0; } |
ステータス
項目 | データ |
---|---|
問題 | 0595 - ぬいぐるみの整理 (Plush Toys) |
ユーザー名 | latte0119 |
投稿日時 | 2017-02-05 23:57:47 |
言語 | C++11 |
状態 | Accepted |
得点 | 1 |
ソースコード長 | 1181 Byte |
最大実行時間 | 152 ms |
最大メモリ使用量 | 26596 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | set1 | 20 / 20 | *t4*1.txt |
2 | set2 | 0 / 20 | *t4*2.txt |
3 | set3 | 0 / 20 | *t4*3.txt |
4 | set4 | 0 / 20 | *t4*4.txt |
5 | set5 | 0 / 20 | *t4*5.txt |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # | ||||
---|---|---|---|---|---|---|---|---|
2017-yo-t4-in1.txt | AC | 23 ms | 12768 KB |
1
|
||||
2017-yo-t4-in2.txt | AC | 21 ms | 15052 KB |
2
|
||||
2017-yo-t4-in3.txt | AC | 33 ms | 19752 KB |
3
|
||||
2017-yo-t4-in4.txt | AC | 85 ms | 25104 KB |
4
|
||||
2017-yo-t4-in5.txt | AC | 152 ms | 26596 KB |
5
|