CF157B题解
【原题链接】
解题思路:
先按递减的顺序排序,然后依次枚举每个半径,因为他是一红一蓝一红一蓝......
所以每次枚举时
求圆的面积需要知道
圆的面积计算方法: 【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;
}