博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JZOJ 3055. 【NOIP2012模拟10.27】比赛
阅读量:4490 次
发布时间:2019-06-08

本文共 1447 字,大约阅读时间需要 4 分钟。

题目

Description

 

有两个队伍AB,每个队伍都有n个人。这两支队伍之间进行n11比赛,每一场都是由A中的一个选手与B中的一个选手对抗。同一个人不会参加多场比赛,每个人的对手都是随机而等概率的。例如A队有A1A2两个人,B队有B1B2两个人,那么(A1 vs B1,A2 vs B2)(A1 vs B2,A2 vs B1)的概率都是均等的50%

每个选手都有一个非负的实力值。如果实力值为XY的选手对抗,那么实力值较强的选手所在的队伍将会获得(X-Y)^2的得分。

A的得分减B的得分的期望值。

 

 

 

Input

 

第一行一个数n表示两队的人数为n

第二行n个数,第i个数A[i]表示队伍A的第i个人的实力值。

第三行n个数,第i个数B[i]表示队伍B的第i个人的实力值。

 

 

 

Output

 

输出仅包含一个实数表示A期望赢B多少分。答案保留到小数点后一位(注意精度)。

 

 

 

Sample Input

23 71 5

Sample Output

20.0
 

Data Constraint

 
 

Hint

 

对于30%的数据,n50

对于100%.,n50000;A[i],B[i]50000

 

分析

    利用公式算出每个人的期望  

   显然任意两个人相遇的概率是相等的,=两人第一场相遇的概率+两人第一场不相遇的概率*两人第二场相遇的概率+……。

 

代码

1 #include
2 #include
3 #include
4 using namespace std; 5 long long a[100001],b[101001],sum[100001],summ[100001]; 6 long long ans=0,cs; 7 int n; 8 int main () 9 {10 11 cin>>n;12 for (int i=1;i<=n;i++)13 cin>>a[i];14 for (int i=1;i<=n;i++)15 cin>>b[i];16 sort(a+1,a+1+n);17 sort(b+1,b+1+n);18 for (int i=1;i<=n;i++)19 {20 sum[i]=sum[i-1]+b[i];21 summ[i]=summ[i-1]+b[i]*b[i];22 }23 long long j=0;24 for (int i=1;i<=n;i++)25 {26 while (a[i]>b[j]&&j<=n) j++;27 ans+=(j-1)*a[i]*a[i]-2*a[i]*sum[j-1]+summ[j-1];28 ans-=((n-j+1)*a[i]*a[i]-2*a[i]*(sum[n]-sum[j-1])+summ[n]-summ[j-1]);29 }30 double s=(double)(ans)/(double)(n);31 printf("%.1f",s);32 }

 

 

转载于:https://www.cnblogs.com/zjzjzj/p/10500550.html

你可能感兴趣的文章
欢迎来到Attention的博客
查看>>
获取IOS bundle中的文件
查看>>
document
查看>>
Hadoop下大矩阵乘法Version2
查看>>
iPhone内存溢出——黑白苹果
查看>>
Struts2学习笔记(十二) 类型转换(Type Conversion)(下)
查看>>
tcpdump学习
查看>>
局域网内传输文件速度慢
查看>>
Linux的核心版本(摘抄)
查看>>
CASE表达式
查看>>
zkw线段树
查看>>
作业1226
查看>>
mainline.js主线
查看>>
fseek()
查看>>
Python学习笔记——PyQt控件中文字居中显示
查看>>
JAVA环境下利用solrj二次开发SOlR搜索的环境部署常见错误
查看>>
Beta阶段敏捷冲刺前准备
查看>>
mini web框架-3-替换模板
查看>>
Siamese Network简介
查看>>
svg学习(三)rect
查看>>