链接
知识点
模拟,暴力,枚举
思路
1、枚举整个走廊需要被涂上的颜色。
2、对于每种颜色,计算涂上它需要的最少天数:从左到右遍历每个房子,如果该房子的颜色不是当前正在涂的颜色,那么就从该房子开始,向右涂k 个房子,直到将区间涂上目标颜色,同时记录涂漆天数cnt,每当涂漆颜色发生变化时,增加一天。
3、将所有颜色涂上所需的天数取最小值,即为答案。
代码
#include<bits/stdc++.h>
using namespace std;
vector<int>vec;
int main(){
ios::sync_with_stdio,cin.tie(0),cout.tie(0); //取消同步流,加快输入输出的速率
int t=0;
cin>>t;
while(t--){
vec.clear();
int n,k,days=0x3f3f3f3f;
cin>>n>>k;
for(int i=1;i<=n;i++){
int x;
cin >>x;
vec.push_back(x);
}
for(int j=1;j<=60;j++){
int cnt=0;
for(int s=0;s<vec.size();s++){
if(vec[s]!=j){
s+= k-1;
cnt++;
}
}
days=min(days,cnt);
}
cout<<days<<endl;
}
return 0;
}