【题解】HDU7046(数学推导)

博客介绍了如何通过数学推导解决一道计算几何题目,涉及图形的凸包计算。作者给出了一段AC代码,用于计算按照特定规则画出的图形的凸包面积。文章适合对算法和数学感兴趣的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:https://acm.hdu.edu.cn/showproblem.php?pid=7046

题目来源:2021“MINIEYE杯”中国大学生算法设计超级联赛(7)

题目大概要求就是求按照给定的规则画出的图形的凸包大小。乍一看是计算几何的题目,然后再细想,其实就是一题数学推导的题目。

先画出内容,然后手动推一下边长的公式,然后就可以推出面积公式,直接计算就可以了。

AC代码

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

int t, k;
int x_root, y_root, xl, yl, xr, yr;

inline double qpow(double base, int n)
{

    double ans = 1;
    while (n)
    {
        if (n & 1)
        {
            ans = ans * base;
        }
        base = base * base;
        n >>= 1;
    }
    return ans;
}

int main()
{
    scanf("%d", &t);
    while (t--)
    {
        scanf("%d", &k);
        scanf("%d%d%d%d%d%d", &x_root, &y_root, &xl, &yl, &xr, &yr);

        int dy = y_root - yr;
        double d = xr - xl;
        double h = (k - 1) * dy;

        double w = 0.0;

        double ans = 4 * (k - 2) + 3 * qpow(0.5, k - 2) - 2;

        ans *= 0.5 * d * dy;

        printf("%.3lf\n", ans);
    }
}

转载请注明原文:https://www.longjin666.top/?p=1128

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值