0
点赞
收藏
分享

微信扫一扫

2020牛客寒假算法基础集训营5.J——牛牛战队的秀场


​​题目传送门​​

题目描述

牛牛战队里,不仅有训练,也有追逐。

牛牛和牛能总是想知道谁更秀一点,他们通常会去比谁的代码更秀,谁的成绩更秀……

这一次,他们开始比谁的走位更秀。他们来到一个半径为r的圆上,画了圆内接的正nn边形。为了秀走位,他们只允许自己在多边形的边上移动。

同时,他们随便选取正n边形的一个顶点为1号顶点,按顺时针的顺序把其他的点叫做2号顶点,3号顶点……一开始,两人分别在ii号顶点和jj号顶点。

现在,牛牛要一边沿着多边形的边秀走位,一边走向牛能。他想知道,他最短要走多少距离才能走到牛能的旁边?

输入描述:

输入数据共22行,第一行有两个整数2020牛客寒假算法基础集训营5.J——牛牛战队的秀场_#include,表示在半径为r的圆上画了一个内接nn边形。

第二行有两个整数2020牛客寒假算法基础集训营5.J——牛牛战队的秀场_#include_02,表示牛牛一开始在i号顶点,牛能一开始在j号顶点。

输出描述:

一个小数x,表示牛牛要移动的最短距离。

如果你的答案是a,标准答案是b,如果 2020牛客寒假算法基础集训营5.J——牛牛战队的秀场_c++_03

输入

4 1
1 2

输出

1.414214

题解

  • 先求一条边的边长。如图,2020牛客寒假算法基础集训营5.J——牛牛战队的秀场_c++_04边形对应的2020牛客寒假算法基础集训营5.J——牛牛战队的秀场_#define_05 ,边长就是2020牛客寒假算法基础集训营5.J——牛牛战队的秀场_#define_06
  • 再求i到j最短经过几条边:2020牛客寒假算法基础集训营5.J——牛牛战队的秀场_#define_07
  • 最后答案就是2020牛客寒假算法基础集训营5.J——牛牛战队的秀场_#include_08
  • 2020牛客寒假算法基础集训营5.J——牛牛战队的秀场_#define_09

AC-Code

#include <bits/stdc++.h>
using namespace std;
#define
int main() {
int n, r; while (cin >> n >> r) {
double ans = 0;
int i, j; cin >> i >> j;
if (i > j) swap(i, j);
int dt = min(i + n - j, j - i);
printf("%.6f\n", dt * 2.0 * r * sin(PI / n));
}
return 0;
}


举报

相关推荐

0 条评论