1 条题解

  • 0
    @ 2025-8-24 22:37:16

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar I_Love_Potter
    野生哈迷

    搬运于2025-08-24 22:37:16,当前版本为作者最后更新于2022-03-31 12:08:01,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    思路

    将骷髅的横坐标、纵坐标的比化简成最简形式,再用容器去重,再输出容器内的数量。

    看到这里,如果你是因为没有思路点进来的,建议按照上面的思路试着写一写哦

    代码

    #include<bits/stdc++.h>//万能头YYDS 
    using namespace std;
    map<pair<int,int>/*我试着用结构体 但是不行*/,bool>mp;
    int n,m,sx,sy;
    char c;
    queue<pair<int,int> >kulou;
    int main(){
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                cin>>c;
                if(c=='K') kulou.push(make_pair(i,j));//把每个骷髅的位置存起来 
                if(c=='S') sx=i,sy=j;//记录神箭游侠的位置 
            }
        }
        
        while(!kulou.empty()){
            int tx=kulou.front().first,ty=kulou.front().second;
            kulou.pop();
    		tx-=sx;
    		ty-=sy;
            int g=abs(__gcd(tx,ty));
            tx/=g;//化简比 
    		ty/=g;//化简比 
            mp[make_pair(tx,ty)]=true;//类似桶的思想 
        }
    	cout<<mp.size();//输出长度 
        return 0;
    }
    

    最后

    这是我的第一篇题解,希望管理大大通过,管理员辛苦了

    • 1

    信息

    ID
    5563
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者