专栏文章
题解:AT_abc376_b [ABC376B] Hands on Ring (Easy)
AT_abc376_b题解参与者 4已保存评论 5
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @min6ygn0
- 此快照首次捕获于
- 2025/12/01 21:34 3 个月前
- 此快照最后确认于
- 2025/12/01 21:34 3 个月前
观察到无论哪只手进行操作,有且仅有顺时针与逆时针两种走法。考虑另一只手的阻挡,可确定唯一路线。
具体解释见代码。
CPP#include <bits/stdc++.h>
using namespace std;
int main(){
int n,q,t,l=1,r=2,ans=0;//记录左右手位置和答案
char h;
cin>>n>>q;
for(int i=1;i<=q;i++){
cin>>h>>t;//读入
if(h=='L'){
int dl=min(l,t);//左手与终点序号较小者
int dr=max(l,t);//左手与终点序号较大者
if(dl<r && r<dr) ans+=n-abs(l-t);//顺时针被阻挡,按逆时针走
else ans+=abs(l-t);//按顺时针走
l=t;//更新左手位置
}
else{//右手思路基本相同
int dl=min(r,t);
int dr=max(r,t);
if(dl<l && l<dr) ans+=n-abs(r-t);
else ans+=abs(r-t);
r=t;
}
}
cout<<ans;//输出
return 0;
}
//Terabyte's code.
相关推荐
评论
共 5 条评论,欢迎与作者交流。
正在加载评论...