专栏文章

题解: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 条评论,欢迎与作者交流。

正在加载评论...