NOIP2012模擬10 27 比賽

2021-09-03 00:00:52 字數 1859 閱讀 2164

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多少分。答案保留到小數點後一位(注意精度)。

題解∑(a[i]-b[i))^2

注意字尾數要在排序後t_y

**

type

arr=array [0..50001] of int64;

var n:longint;

ans:extended;

a,b,ansb,sumb:arr;

procedure

qsort

(var o:arr; l,r:longint);

var i,j,m,t:longint;

begin

i:=l; j:=r;

m:=o[(l+r) div

2]; repeat

while o[i]do inc(i);

while o[j]>m do dec(j);

if i<=j then

begin

t:=o[i]; o[i]:=o[j]; o[j]:=t;

inc(i); dec(j);

end;

until i>j;

if lthen qsort(o,l,j);

if ithen qsort(o,i,r);

end;

procedure

init;

var i:longint;

begin

readln(n);

for i:=1

to n do

read(a[i]);

qsort(a,1,n);

for i:=1

to n do

read(b[i]);

qsort(b,1,n);

ansb[0]:=0; sumb[0]:=0;

for i:=1

to n do

begin

ansb[i]:=ansb[i-1]+b[i];

sumb[i]:=sumb[i-1]+b[i]*b[i];

end;

end;

procedure

main;

var i,t:longint;

begin

ans:=0; t:=0;

for i:=1

to n do

begin

while (tand (a[i]>b[t+1]) do inc(t);

ans:=ans+a[i]*a[i]*(2*t-n);

ans:=ans+2*sumb[t]-sumb[n];

ans:=ans-2*a[i]*(2*ansb[t]-ansb[n]);

end;

write(ans/n:0:1);

end;

begin

init;

main;

end.

NOIP2012模擬10 25 旅行

給定乙個n行m列的字元矩陣,代表空地,x 代表障礙。移動的規則是 每秒鐘以上下左右四個方向之一移動一格,不能進入障礙。計算 在空地中隨機選擇起點和終點 可以重合,此時最短耗時為0 從起點移動到終點最短耗時的平均值。每一行每一列至多有1個障礙,並且障礙不在對角線方向相鄰。以下矩陣是不合法的 x x.第...

NOIP2012模擬10 25 剪草

首先分析的出兩個結論,1 每棵草最多隻剪一次 2 按照生長速度,先剪小的,再剪大的。不難證明,略。那麼把小草按生長速度從大到小排個序後,設f i,j 表示,在倒數第i個時刻,已經處理了j棵草時的最小高度和。轉移為f i j min f i j 1 f i 1 j 1 a j g a ns i 1 a...

NOIP2012模擬10 25 旅行

給定乙個n行m列的字元矩陣,代表空地,x 代表障礙。移動的規則是 每秒鐘以上下左右四個方向之一移動一格,不能進入障礙。計算 在空地中隨機選擇起點和終點 可以重合,此時最短耗時為0 從起點移動到終點最短耗時的平均值。每一行每一列至多有1個障礙,並且障礙不在對角線方向相鄰。以下矩陣是不合法的 xx.50...