• Scapegoat


    Scapegoat

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <queue>
     5 #include <cmath>
     6 #include <ctime>
     7 #include <algorithm>
     8 using namespace std;
     9 typedef long long ll;
    10 const ll mod=1e9+7;
    11 const int maxn=2e5+10;
    12 #define dug printf("************
    ")
    13 struct node///预判下一步把一个人加入哪,它的作用更大,则把预判比较大的加入一个人
    14 {
    15     int id;///编号
    16     double cnt;///人数
    17     double val;///预判总方差
    18     bool operator < (const node &num) const {
    19         return val<num.val;
    20     }
    21 };
    22 
    23 int n,m;
    24 double a[maxn];
    25 double avg;
    26 priority_queue<node>q;
    27 int mp[maxn];
    28 
    29 int main()
    30 {
    31     int t;
    32     scanf("%d",&t);
    33     for(int cas=1; cas<=t; cas++ )
    34     {
    35         while(!q.empty()) q.pop();
    36         scanf("%d%d",&n,&m);
    37         avg=0;
    38         for(int i=0; i<n; i++)
    39         {
    40             scanf("%lf",&a[i]);
    41             mp[i]=1;
    42             avg+=a[i];
    43         }
    44         avg/=(double)m;
    45         for(int i=0; i<n;i++)
    46         {
    47             double x=mp[i]*(a[i]-avg)*(a[i]-avg)-2*(a[i]/2-avg)*(a[i]/2-avg);
    48             q.push(node{i,mp[i],x});
    49         }
    50         for(int i=0; i<m-n; i++)
    51         {
    52             node now=q.top();
    53             q.pop();
    54             mp[now.id]++;
    55             double x=mp[now.id]*(a[now.id]/mp[now.id]-avg)*(a[now.id]/mp[now.id]-avg)-(mp[now.id]+1)*(a[now.id]/(mp[now.id]+1)-avg)*(a[now.id]/(mp[now.id]+1)-avg);
    56             q.push(node{now.id,mp[now.id],x});
    57         }
    58         double ans=0;
    59         for(int i=0; i<n; i++) ans+=1.0*mp[i]*(a[i]/mp[i]-avg)*(a[i]/mp[i]-avg);
    60         ans/=(double)m;
    61         printf("Case #%d: %.12lf
    ",cas,ans);
    62     }
    63     return 0;
    64 }
  • 相关阅读:
    SQL数据类型详解
    将Excel表格导入DataTable的方法
    .net的反射机制
    经典SQL语句大全(一)
    c# Invoke和BeginInvoke 区别
    c#中两种常用的异步调用方法
    SQL存储过程参数问题
    API 函数大全(下)
    API函数大全 (上)
    javascript 常用function
  • 原文地址:https://www.cnblogs.com/wsy107316/p/11785186.html
Copyright © 2020-2023  润新知