题解 | 小红的圆移动

小红的圆移动

https://www.nowcoder.com/practice/3d7a2818ac5746f5baf795de99a17f45

// 最烦的就是几何题
// 不过当你对一道题感觉很难受的时候,这也正是你进步的时候
// 算法竞赛只有无限的难受与一瞬间的欢喜

#include <cmath>
#include <cstdio>
#include <algorithm>
#include <functional>
using namespace std;
using db = double;
const db pi = acos(-1.0);

void solve()
{
    int n,k;scanf("%d%d",&n,&k);
    vector<db>v;
    // 
    for (int i = 0;i < n;i++)
    {
        db x,y,r;scanf("%lf%lf%lf",&x,&y,&r);
        db d = sqrt(x*x+y*y);
        if (d < r)
        {
            // 只有距离原点距离小于r,我们采取考虑
            v.push_back((r-d)*r*r*pi);
        }
    }   
    sort(v.begin(),v.end(),greater<db>());
    db res = 0.0;
    // 从第k+1近个圆形开始,
    for (int i = k;i < v.size();i++)
        res+=v[i];
    printf("%.8lf\n",res)
;}
int main()
{
    solve();return 0;
}

RogeAustine题解系列 文章被收录于专栏

这里是RogeAustine的题解专栏,里面包含的题目都是十分典型的经典题目。

全部评论

相关推荐

牛至超人:哈工大已经很棒了,不需要加括号了,然后咋没有实习经历呢?火速趁寒假整一段实习,导师不让就狠狠肘击
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务