Codeforces Round #492 (Div. 2) [Thanks, uDebug!] — 赛后补题
Posted zgglj-com
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #492 (Div. 2) [Thanks, uDebug!] — 赛后补题相关的知识,希望对你有一定的参考价值。
题解:同一个位置的访问时间是 time = i - 1 + k * n(每秒向前移动一步,初始时刻是0),从每个位置的出去时间满足( i - 1 + k * n >= a[ i ] ),然后解出满足不等式的最小的k,代入( i - 1 + k * n),就是从该位置出去的时刻,那么答案就是所有位置中出去时间最早的位置。因为time的大小只和k有关,所以可以直接比较k的大小。
PS:2000人的题FST了,真是气啊。除法中向上取整,分母加上 n - 1,避免判断!!!!!
#include<bits/stdc++.h> #define ll long long #define P pair<int,int> #define pb push_back #define lson root << 1 #define INF (int)2e9 + 7 #define maxn (int)1e5 + 7 #define rson root << 1 | 1 #define LINF (unsigned long long int)1e18 #define mem(arry, in) memset(arry, in, sizeof(arry)) using namespace std; int n; int a[maxn]; int main() { cin >> n; int res = INF, ans; for(int i = 1; i <= n; i++){ cin >> a[i]; int y = (a[i] - i + n) / n; if(res > y){ res = y; ans = i; } } cout << ans << endl; return 0; }
以上是关于Codeforces Round #492 (Div. 2) [Thanks, uDebug!] — 赛后补题的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #492 (Div. 2) [Thanks, uDebug!] — 赛后补题
Codeforces Round #436 E. Fire(背包dp+输出路径)
[ACM]Codeforces Round #534 (Div. 2)
CodeforcesCodeforces Round #492 (Div. 2) [Thanks, uDebug!] (Contest 996)