平平无奇的一篇题解
I_Love_Potter · · 题解
思路
将骷髅的横坐标、纵坐标的比化简成最简形式,再用容器去重,再输出容器内的数量。
看到这里,如果你是因为没有思路点进来的,建议按照上面的思路试着写一写哦
代码
#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;
}
最后
这是我的第一篇题解,希望管理大大通过,管理员辛苦了