本题给出了一个数学公式,一件衣服在第x天穿后,下一次最早穿是第x+N-1天。也就是两次穿同一件衣服的间隔应该是N-1天,由此可以递推出和周有关的公式。不妨设到达目标条件的周数为k,第一周穿是第一周的第d1天,最后一次穿是最后一周的第d2天,则(k-1)*N+(d2-d1)=(k-1)(*N-1),解得k = d1-d2+1。不难发现,当d1足够小,d2足够大时,到达目标条件可以不受规定限制,例如第一天穿的衣服最早可以在第1+N-1=N天穿,甚至还在同一周,因此这种情况的最小周数应该判定为1,即在求解时应该与1比较求max值。对每件衣服都进行比较,找出周目最大值即为答案。
using namespace std;

int main(){
    int N;cin>>N;
    vector<int> week_f(N+1);
    vector<int> week_l(N+1);
    int cloth,day;
    for(int i = 1;i<=N;i++){
        cin>>cloth;
        week_f[cloth] = i;
    }
    for(int i = 1;i<=N;i++){
        cin>>cloth;
        week_l[cloth] = i;
    }
    int ans = 0;
    for(int i = 1;i<=N;i++){
        int temp = max(1,week_f[i]-week_l[i]+1);
        //cout<<temp<<endl;
        ans = max(ans,temp);
    }
    cout<<ans;
    return 0;
}