https://www.hackerrank.com/contests/w31/challenges

Beautiful Word 模拟

Accurate Sorting 检查每个数字距离原位是否都不超过1

Zero-One Game 计算可以被删去的数字个数

Spanning Tree Fraction 最优比率生成树,分数规划+Kruscal

Colliding Circles 算出两两圆之间最后被合并的概率,由期望的线性性计算对答案的贡献

#include<bits/stdc++.h>
typedef long double ld;
int n,k,r[100007];
int main(){
    scanf("%d%d",&n,&k);
    long long s1=0,s2=0;
    for(int i=0;i<n;++i)scanf("%d",r+i),s1+=r[i],s2+=r[i]*r[i];
    ld p=1;
    for(int i=n;i>n-k;--i){
        long long a=1ll*i*(i-1);
        p=p*ld(a-2)/ld(a);
    }
    printf("%.12Lf",acos(-1)*(s2+(s1*s1-s2)*(1-p)));
    return 0;
}
View Code

相关文章: