大家好,又见面了,我是你们的朋友全栈君。
对于不在应该在的位置上的一个数a[i],每轮排序a[i]可以向后走多步,但只能向前一步,所以答案就是\[max \{i-a[i]\}\]
很恶心的卡常数,如果统计ans再开一个循环的话,需要开O3
关于在循环内统计答案的正确性。。。。不是很懂
#pragma GCC optimize("O3") #include <bits/stdc++.h> using namespace std; const int MAXN = 3e7+7; int a[MAXN], n, s, b, c, d, ans; int main(void) { cin >> n >> s >> b >> c >> d; for(int i = 1; i <= n; ++i) { a[i] = i; s = (s * 1ll * b + c) % d; swap(a[i], a[s%i+1]); ans = max(ans, i-a[i]); } cout << ans; return 0; }
转载于:https://www.cnblogs.com/storz/p/10191359.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107111.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...