Logo FiraCode 的博客

博客

CF157B题解

...
FiraCode
2025-12-01 12:55:17
什么意思呢

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2022-04-10 20:59:05

【原题链接】

解题思路:

先按递减的顺序排序,然后依次枚举每个半径,因为他是一红一蓝一红一蓝......

所以每次枚举时 $i$ 要每次 $+2$。

求圆的面积需要知道 $π$,这里设 $PI = \operatorname{acos(-1)}$($\operatorname{acos()}$ 是反余弦函数,$\operatorname{acos(π)} = -1$,所以 $π = $ $\operatorname{acos(-1)}$)。

圆的面积计算方法: 【AC记录】

AC Code:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
const double PI = acos(-1);
const int N = 110;
int n;
int r[N];
int main() {
    cin >> n;
    for (int i = 0; i < n; ++ i) cin >> r[i];
    sort (r , r + n , greater<int>());\/\/排序,按递减的顺序排 
    double res = 0;
    for (int i = 0; i < n; i += 2)\/\/因为红色的中间隔着一个蓝色的,所以每次i+=2 
        res += PI * (r[i] * r[i] - r[i + 1] * r[i + 1]);\/\/计算他的面积,用他本身的面积减去他包含的面积 
    printf ("%.6lf" , res);\/\/输出保留6为小数 
    return 0;
}

评论

暂无评论

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。