Skip to content

Commit 36e971e

Browse files
authored
Create 2019-F-A.cpp
1 parent 8c42fbd commit 36e971e

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

kick-start/2019-F-A.cpp

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#include<bits/stdc++.h>
2+
#define ms(x,v) memset((x),v,sizeof(x))
3+
#define INF 0x3f3f3f3f
4+
using namespace std;
5+
6+
const int MAXN = 100+10;
7+
typedef long long LL;
8+
9+
10+
11+
void solve(){
12+
int N,K;
13+
cin >> N >> K;
14+
15+
vector<vector<int> > dp(N,vector<int>(K+1,INF));
16+
vector<vector<int> > num(N,vector<int>(N,0));
17+
vector<int> h(N);
18+
for(int i=0 ; i<N ; ++i)cin >> h[i];
19+
20+
for(int i=0 ; i<N ; ++i){
21+
unordered_map<int,int> cnt;
22+
int max_value = -1;
23+
for(int j=i ; j<N ; ++j)
24+
{
25+
cnt[h[j]]++;
26+
if(cnt[max_value] < cnt[h[j]])
27+
max_value = h[j];
28+
num[i][j] = j -i +1 - (cnt[max_value]);
29+
}
30+
}
31+
32+
for(int i=0; i<N ; ++i)
33+
{
34+
dp[i][0] = num[0][i];
35+
for(int k=1 ; k<=K ; ++k){
36+
if(k >=i)
37+
dp[i][k] =0;
38+
for(int j=1 ; j<=i ; ++j)
39+
dp[i][k] = min(dp[i][k], dp[j-1][k-1]+num[j][i]);
40+
}
41+
}
42+
cout << dp[N-1][K] << "\n";
43+
}
44+
45+
46+
47+
48+
int main(){
49+
ios :: sync_with_stdio(0);
50+
cin.tie(0);
51+
// cout.tie(0);
52+
std::cout.precision(10);
53+
std::cout.setf( std::ios::fixed, std:: ios::floatfield );
54+
55+
int T;
56+
cin >> T;
57+
for(int tt =1 ; tt <=T ; ++tt)
58+
{
59+
cout << "Case #" << tt << ": ";
60+
solve();
61+
}
62+
63+
64+
return 0;
65+
}

0 commit comments

Comments
 (0)