问题描述:
题解:
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],b[N];
signed main()
{
int T=1;
cin>>T;
while(T--)
{
int n,k,res=0x3f3f3f3f;
cin>>n>>k;
for (int i=1;i<=n;i++)cin>>a[i];
for (int i=1;i<=60;i++)
{
int cnt=0;
for (int j=1;j<=n;j++)b[j]=a[j];
for (int j=1;j<=n;j++)
{
if(b[j]!=i)
{
for(int h=j;h<=j+k-1;h++)b[h]=i;
j=j+k-1;
cnt++;
}
}
res=min(res,cnt);
}
cout<<res<<endl;
}
return 0;
}
要点分析:
1.由题目中n的取值范围先行定义N,因为N为数组容量,为防止溢出,常作放大处理,
1e5+10 表示 1x10**5 + 10
const int N=1e5+10; int a[N],b[N];
2.使用 signed main 和 int main 的区别
3. int T = 1 跟条件要求有关(t在1~100之间)初始化内存T 防止爆出 除全局变量以外都需要初始化
4.初始化最小值和最大值
int min=0x3f3f3f3f; int max=0xc0c0c0c0;
5.解题思路
![]()