Description

有两个队伍A和B,每个队伍都有n个人。这两支队伍之间进行n场1对1比赛,每一场都是由A中的一个选手与B中的一个选手对抗。同一个人不会参加多场比赛,每个人的对手都是随机而等概率的。例如A队有A1和A2两个人,B队有B1和B2两个人,那么(A1 vs B1,A2 vs B2)和(A1 vs B2,A2 vs B1)的概率都是均等的50%。
每个选手都有一个非负的实力值。如果实力值为X和Y的选手对抗,那么实力值较强的选手所在的队伍将会获得(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

2
3 7
1 5

Sample Output

20.0

Hint

【数据规模】
对于30%的数据,n≤50。
对于100%的.据,n≤50000;A[i],B[i]≤50000。
code:
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<iomanip>
 5 #define N 100006
 6 using namespace std;
 7 long long a[N],b[N],sqsuma[N],sqsumb[N],suma[N],sumb[N];
 8 int main() {
 9     int n;
10     cin>>n;
11     for(int i=1; i<=n; i++) {
12         cin>>a[i];
13     }
14     for(int i=1; i<=n; i++) {
15         cin>>b[i];
16     }
17     sort(a+1,a+n+1);
18     sort(b+1,b+n+1);
19     for(int i=n;i>=1;i--){
20         sqsuma[i]=sqsuma[i+1]+a[i]*a[i];
21         suma[i]=suma[i+1]+a[i];
22         sqsumb[i]=sqsumb[i+1]+b[i]*b[i];
23         sumb[i]=sumb[i+1]+b[i];
24     }
25     long long A=0,B=0;
26     for(int i=1;i<=n;i++){
27         int pos=upper_bound(b+1,b+n+1,a[i])-b;
28         long long now1=sqsumb[pos];
29         long long now2=(n-pos+1)*a[i]*a[i];
30         long long now3=2*sumb[pos]*a[i];
31         A+=now1+now2-now3;
32         now1=(sqsumb0[1]-sqsumb[pos]);
33         now2=(pos-1)*a[i]*a[i];
34         now3=2*(sumb[1]-sumb[pos])*a[i];
35         B+=now1+now2-now3;
36     }
37     cout<<fixed<<setprecision(1)<<(long double)(B-A)*1.0/n;
38     return 0;
39 }

over

转载于:https://www.cnblogs.com/saionjisekai/p/9879276.html

10.30T2 二分+前缀和(后缀和)相关推荐

  1. 【CF917E】Upside Down(哈希二分)(后缀数组)(AC自动机)

    传送门 诈尸,主要是最近一直在刷水题感觉没有什么值得写的. 口胡好题,不建议写. 题解: 一句话说,将出现的情况分为在 u-LCA链上 和横跨LCA 分别统计. 在链上的可以直接建立正反AC自动机,然 ...

  2. 中缀表达式转换为前缀及后缀表达式并求值【摘】

    它们都是对表达式的记法,因此也被称为前缀记法.中缀记法和后缀记法.它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前:中缀和后缀同理. 举例: (3 + 4) ...

  3. 255.0.0.0子网掩码相应的cidr前缀表示法是?_六十四、前缀,后缀,中缀表达式转化求值问题...

    「@Author:Runsen」 ❝ 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化. 「---- Runsen」 ❞ 算法,一门既不容易入门,也不容易精通的学问. 上次介 ...

  4. 前缀 中缀 后缀表达式2

    对于未经训练的用户来说,计算机科学领域中数学表达式求值的传统方法即不顺手又难以使用:软件工程师 Nikola.Stepan 旨在改变这些传统方法.他的 applet W3Eval 对表达式求值与您用纸 ...

  5. 【Java 8 新特性】Java 8 Util API: StringJoiner 详解 | 拼接字符串添加分隔符、前缀和后缀

    Java 8 Util API: StringJoiner 详解 StringJoiner(CharSequence d) StringJoiner.add(CharSequence element) ...

  6. P1083 借教室(标记永久化线段树/二分+前缀和)难度⭐⭐⭐★

    P1083 借教室 标记永久化线段树 很典型的区间修改问题,先输入赋值建树(这就是最典型的线段树呀,别忘了),然后修改 这里问的是是否有足够的空教室,所以线段树中 min 代表的是当前区间内最小的剩余 ...

  7. POJ 3061 (二分+前缀和or尺取法)

    题目链接: http://poj.org/problem?id=3061 题目大意:找到最短的序列长度,使得序列元素和大于S. 解题思路: 两种思路. 一种是二分+前缀和.复杂度O(nlogn).有点 ...

  8. 六十四、前缀,后缀,中缀表达式转化求值问题

    @Author:Runsen 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化. ---- Runsen 算法,一门既不容易入门,也不容易精通的学问. 上次介绍如何利用栈实现 ...

  9. java string 前缀匹配_字符串前缀和后缀匹配

    娜 娜费劲九牛二虎之力终于把糖果吃完了(说好的吃不完呢?骗人,口亨~),于是,缘溪行,忘路之远近.忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤 纷,娜娜甚异之.复前行,欲穷其林.林尽水源,便得一 ...

最新文章

  1. centos路由查看命令_CentOS下使用Route命令添加路由
  2. python 循环技巧
  3. servlet中url-pattern之/与/*的区别
  4. centos7 frp内网穿透
  5. 【离散数学】极小全功能集
  6. python 最麻烦的时间有药了
  7. centos 7增强命令补全
  8. Hi3559AV100的MPP系统绑定实现
  9. python背景怎么自定义铃声_Python 上课铃声的定时播放(具有较强的自我管理意识.jpg)...
  10. XP环境下查看psd文件缩略图显示补…
  11. cocos游戏FlyBird
  12. 屏幕录像专家 V6.0+注册机
  13. mysql 1146错误 修复6,MySQL中出现错误1146时出现问题
  14. 搭建校园电视台和录播教室+在线教育实施方案
  15. 合同和协议的区别_合同和协议有什么区别?
  16. DNS协议分析(域名解析)
  17. android homme2016款,丁日的最爱:Android Homme。WTF!安卓家?
  18. 白嫖代理去哔哩哔哩看冰冰!!!确定不进来康康?
  19. linux群晖系统密码忘记,【系统篇】猫盘群晖重置密码、重装、重置、升级与降级等...
  20. JAVA学习笔记—IO流

热门文章

  1. 安装Requests
  2. 展望我的2022Flag
  3. 根可达算法的根_GC垃圾回收算法
  4. 怎么把图片存入mysql_如何把图片存储到mysql数据库中
  5. java实现下载压缩文件_java实现文件压缩下载----压缩下载zip
  6. 中原银行张本晨:中原银行数字化营销体系建设实践
  7. 游戏行业全场景数字化解决方案全面上线,速来围观
  8. 数据分析师可不是啥好工作
  9. 好货日报邀请码54321软件的操作逻辑
  10. 简便的chrome插件安装