Submission #10944


ソースコード

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
49
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <queue>
#include <map>
#define F first
#define S second
using namespace std;
int n,m;
int a[111111];
int sa[22][111111];
int aa[22];
int dp[1<<22];
int solve(int bit,int s){
if(bit == (1<<m)-1) return 0;
if(dp[bit] >= 0) return dp[bit];
int ret = 1<<28;
for(int i = 0; i < m; i++){
if(bit & (1<<i)) continue;
ret = min(ret,aa[i]-(sa[i][s+aa[i]]-sa[i][s])+solve(bit|(1<<i),s+aa[i]));
}
return dp[bit] = ret;
}
int main(void){
scanf("%d %d",&n,&m);
for(int i = 1; i <= n; i++){
scanf("%d",a+i);
a[i]--;
sa[a[i]][i] = 1;
}
for(int j = 0; j < m; j++){
for(int i = 1; i <= n; i++){
sa[j][i] += sa[j][i-1];
}
aa[j] = sa[j][n];
}
memset(dp,-1,sizeof(dp));
printf("%d\n",solve(0,0));
}

ステータス

項目 データ
問題 0595 - ぬいぐるみの整理 (Plush Toys)
ユーザー名 ei1133
投稿日時 2016-12-11 16:47:49
言語 C++11
状態 Accepted
得点 1
ソースコード長 955 Byte
最大実行時間 127 ms
最大メモリ使用量 25988 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 24 ms 18912 KB
1
2017-yo-t4-in2.txt AC 24 ms 21204 KB
2
2017-yo-t4-in3.txt AC 32 ms 23484 KB
3
2017-yo-t4-in4.txt AC 65 ms 25124 KB
4
2017-yo-t4-in5.txt AC 127 ms 25988 KB
5