关于这道题与ABC367E的相似性
查看原帖
关于这道题与ABC367E的相似性
1046636
YFF1楼主2024/11/1 13:40

都是把每个数换成另一个,为什么367E的ST表做法在这里就不行了呢?

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,k,a[200005],st[200005][65],ans[200005];
signed main () {
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		st[i][0]=a[i];
		ans[i]=i;
	}
	for(int i=1;i<=60;i++){
		for(int j=1;j<=n;j++)st[j][i]=st[st[j][i-1]][i-1];
	}
	for(int i=0;i<=60;i++){
		if((k>>i)&1){
			for(int j=1;j<=n;j++)ans[j]=st[ans[j]][i];
		}
	}
	for(int i=1;i<=n;i++)printf("%lld ",a[ans[i]]);
	return 0;
}
2024/11/1 13:40
加载中...