SP1268 CNEASY - CN Tower (Easy) 题解
LYRT_Subway · · 题解
SP1268
解法说明
输入对应建筑关于 CN 塔的方向。
餐厅每
对记录地标的相对方向的数组排序后算出所有相邻地标之间的最大角度差就能使克里斯蒂呆的时间最少。
输入输出并不是本题的难点,最大的难点是如何计算相邻的地标之间的最大角度差,因为最大角度差所在的两个角度可能跨越了
根据高中课本对任意角的定义,我们可以将第一个地标的度数加上
解决了这个问题之后,我们只需要用一个
代码实现
#include<bits/stdc++.h>
using namespace std;
struct station
{
double direction;
string name;
}db[10005];
int cmp(station a,station b)
{
if(a.direction>b.direction)
{
return 0;
}
return 1;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int num;
cin>>num;
double maxn=0,minn=361;
for(int j=0;j<num;j++)
{
cin>>db[j].name>>db[j].direction;
}
sort(db,db+num,cmp);
for(int j=0;j<num;j++)
{
maxn=max(maxn,abs(db[j].direction-(j+1==num?db[0].direction+360:db[j+1].direction)));
}
cout<<ceil((360.000-maxn)*12)<<endl;
}
return 0;
}
感谢您的阅读,希望对您有所帮助!