您当前的位置: 首页 > 

HeartFireY

暂无认证

  • 1浏览

    0关注

    334博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[GYM101173K] CERC 16 C.Convex Contour 计算几何

HeartFireY 发布时间:2021-10-28 00:26:18 ,浏览量:1

题目大意:给定一个字符串序列,不同的字符代表不同的形状(包括等边三角形、矩形、圆形)。按字符串书顺序放置这些图形,求包围这些图形所需轮廓线的长度。

思路:容易发现对于左起第一个矩形之后的轮廓线到右起倒数第一的矩形之间的轮廓线是水平的。那么我们首先从左侧开始找第一个矩形和最后一个矩形,计算中间所夹的长度。然后单独讨论两端的长度。

一个难点在于,三角形到圆的连线是与圆相切的。因此轮廓线上有一段长度是圆弧。那么我们就需要求出圆心角。最容易理解的方式是建系设点,然后推导出公式,利用库函数的反三角函数求出角度即可。

#include 
using namespace std;
const double pai = 3.14159265358979;
char s[25];
double ans;

signed main(){
    int n = 0, fir = 0, last = 0; cin >> n;
    getchar();
    for (int i = 1; i  1) ans += (last - fir - 1) * 2;
        if (fir >= 2) {
            ans += 2;
            for (int i = 2; i             
关注
打赏
1662600635
查看更多评论
0.1145s