倍增没过样例求调
查看原帖
倍增没过样例求调
1178898
OJ_killer楼主2024/8/11 12:08

倍增裸题,不会很难,求求了(wssb)

#include <bits/stdc++.h>
using namespace std;
#define int long long

int n, k, f[200100][70], ans = 1, cnt;

main() {
	cin >> n >> k;
	for (int i = 1; i <= n; i++)
		cin >> f[i][0];
	for (int j = 1; j <= 70; j++)
		for (int i = 1; i <= n; i++)
			f[i][j] = f[f[i][j - 1]][j - 1];
	for (int i = 0; k; k >>= 1, i++) {
		if (k & 1)
			ans = f[ans][cnt];
	}
	cout << ans << endl;
	return 0;
}
2024/8/11 12:08
加载中...