1. 程式人生 > >【NOIP 模擬賽】中值濾波 打表找規律

【NOIP 模擬賽】中值濾波 打表找規律

超出 數學 printf clas col else 中值濾波 include noi

對於這樣看起來不像什麽算法也沒什麽知識點的題,一臉懵逼的話不是手推規律就是打表找規律.........

當然還有一些超出你能力之外的數學題......

#include <cstdio>
const int N=500010;
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=0;
  for(int i=1;i<=n;i++){
    scanf("%d",&now);
    
if(i!=1&&now==last){ int len=i-P-1; ans=Max(ans,((len+1)>>1)-1); if(len&1){ for(int j=P+1;j<i;j++) A[j]=now; }else{ for(int j=P+1;j<=P+(len>>1);j++) A[j]=now^1; for(int j=P+(len>>1)+1;j<i;j++) A[j]
=now; } P=i-1; } last=now; } int i=n+1; int len=i-P-1; ans=Max(ans,((len+1)>>1)-1); if(len&1){ for(int j=P+1;j<i;j++) A[j]=now; }else{ for(int j=P+1;j<=P+(len>>1);j++) A[j]=now^1; for(int j=P+(len>>1)+1;j<i;j++) A[j]
=now; } printf("%d\n",ans); for(i=1;i<=n;i++) printf("%d ",A[i]); return 0; }

【NOIP 模擬賽】中值濾波 打表找規律