在輸入每個顏色的時候紀錄每個顏色跑到第 [i][j] 時的最小時間即為 max(abs(x-i),abs(y-j))
接下來對於每個位置每個顏色的出現時間做排序 排序完後依序把顏色出現時間、結束時間打上差分序列就好了
for(int j=0;j<n;j++){
for(int k=0;k<n;k++){
pii vp[5];
for(int i=1;i<=3;i++){
vp[i-1] = {tt[j][k][i],i};
}
for(int i=0;i<3;i++){
for(int j=i+1;j<3;j++){
if(vp[j]<vp[i])swap(vp[i],vp[j]);
}
}
// sort(all(vp));
cal[vp[0].first][(1<<(vp[0].second-1))]++;
cal[vp[1].first][(1<<(vp[0].second-1))]--;
cal[vp[1].first][(1<<(vp[0].second-1)|(1<<(vp[1].second-1)))]++;
cal[vp[2].first][(1<<(vp[0].second-1)|(1<<(vp[1].second-1)))]--;
cal[vp[2].first][7]++;
}
}
最後就遍歷一次差分序列就可以知道最多出現的次數了~