【NOIP 模拟赛】中值滤波 打表找规律

时间:2023-03-10 02:06:32
【NOIP 模拟赛】中值滤波 打表找规律

对于这样看起来不像什么算法也没什么知识点的题,一脸懵逼的话不是手推规律就是打表找规律.........

当然还有一些超出你能力之外的数学题......

#include <cstdio>
const int N=;
int n,ans,A[N];
inline int Max(int x,int y){
return x>y?x:y;
}
int main(){
scanf("%d",&n);
int last,now,P=;
for(int i=;i<=n;i++){
scanf("%d",&now);
if(i!=&&now==last){
int len=i-P-;
ans=Max(ans,((len+)>>)-);
if(len&){
for(int j=P+;j<i;j++)
A[j]=now;
}else{
for(int j=P+;j<=P+(len>>);j++)
A[j]=now^;
for(int j=P+(len>>)+;j<i;j++)
A[j]=now;
}
P=i-;
}
last=now;
}
int i=n+;
int len=i-P-;
ans=Max(ans,((len+)>>)-);
if(len&){
for(int j=P+;j<i;j++)
A[j]=now;
}else{
for(int j=P+;j<=P+(len>>);j++)
A[j]=now^;
for(int j=P+(len>>)+;j<i;j++)
A[j]=now;
}
printf("%d\n",ans);
for(i=;i<=n;i++)
printf("%d ",A[i]);
return ;
}