Submission #22976
ソースコード
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 | #include<bits/stdc++.h> using namespace std; int n,m,memo[1<<20],a[100000],b[20][100000],cnt[20]; int f( int bits, int idx); main(){ memset (memo,-1, sizeof (memo)); cin>>n>>m; for ( int i=0;i<n;i++){ cin>>a[i]; cnt[--a[i]]++; } for ( int i=0;i<m;i++){ if (a[0]!=i)b[i][0]=1; else b[i][0]=0; for ( int j=1;j<n;j++){ b[i][j]=b[i][j-1]; if (a[j]!=i)b[i][j]++; } } cout<<f(0,0)<<endl; } int f( int bits, int idx){ if (idx==n) return 0; if (memo[bits]!=-1) return memo[bits]; int sum,mn=100000; for ( int i=0;i<m;i++){ if (!(bits&(1<<i))){ sum=b[i][idx+cnt[i]-1]+f(bits|(1<<i),idx+cnt[i]); if (idx!=0)sum-=b[i][idx-1]; if (mn>sum)mn=sum; } } return memo[bits]=mn; } |
ステータス
項目 | データ |
---|---|
問題 | 0595 - ぬいぐるみの整理 (Plush Toys) |
ユーザー名 | ei1516 |
投稿日時 | 2017-07-25 13:04:58 |
言語 | C++11 |
状態 | Accepted |
得点 | 1 |
ソースコード長 | 760 Byte |
最大実行時間 | 95 ms |
最大メモリ使用量 | 12792 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 | 12 ms | 6624 KB |
1
|
||||
2017-yo-t4-in2.txt | AC | 11 ms | 8744 KB |
2
|
||||
2017-yo-t4-in3.txt | AC | 28 ms | 10680 KB |
3
|
||||
2017-yo-t4-in4.txt | AC | 43 ms | 10892 KB |
4
|
||||
2017-yo-t4-in5.txt | AC | 95 ms | 12792 KB |
5
|