社区讨论
40'
P14330 [JOI2021 预选赛 R2] 往返滑道 / Round Sugoroku参与者 2已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @mhiyv7hc
- 此快照首次捕获于
- 2025/11/03 17:57 4 个月前
- 此快照最后确认于
- 2025/11/03 17:57 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll _N = 200000 + 1;
ll N, A, t = 0, s = 0, _l = 0, _r, l[_N], r[_N];
bool d = 0;
string S;
signed main(){
ios::sync_with_stdio(0), cin.tie(), cout.tie();
cin >> N >> A >> S;
_r = N + 1, S = 'x' + S + 'x';
l[0] = 0, r[N + 1] = N + 1;
for (ll i = 1; i <= N; i++){
l[i] = _l;
if (S[i] == '#') s++, _l = i;
}l[N + 1] = _l;
for (ll i = N; i >= 1; i--){
r[i] = _r;
if (S[i] == '#') _r = i;
}r[0] = _r;
while (1){
if (d) t += A - l[A], A = l[A]; else t += r[A] - A, A = r[A];
if (S[A] == 'x') d = !d;
else if (S[A] == '#'){
r[l[A]] = r[A], l[r[A]] = l[A];
S[A] = '.', d = !d, s--;
}if (!s) break;
}cout << t;
return 0;
}
回复
共 6 条回复,欢迎继续交流。
正在加载回复...