coci2011 2012 3 距離之和

2021-08-05 19:03:37 字數 2345 閱讀 8018

【coci2011/2012 3】距離之和

題目:

mirko創造了乙個新的機械人並且決定去測試一下。我們可以想象測試的跑道是乙個二維的空間。初始的時候,機械人在(0,0)的位置,在收到了一系列命令之後,機械人就會移動,這些命令是s,j,i,z,每個命令代表了不同的移動方向。

具體一下,如果機械人原來在(x,y)的位置,在收到了s的命令之後,會向(x,y+1)移動,收到j之後,會向(x,y-1)移動,收到i命令之後會向(x+1,y)移動,收到z命令之後會向(x-1,y)移動。

在這個二維空間上有n個固定的控制點,在每個命令執行之後,每個固定點就會計算自己與機械人的曼哈頓距離,然後把這些距離的總和返回給mirko。

說明:兩個點(x1,y1)和(x2,y2)的曼哈頓是|x1-x2|+|y1-y2|。

輸入:第一行是正整數n(1<=n<=100000)和m(1<=m<=300000),n表示控制點的個數,m表示命令的數量。

接下來n行,每行兩個整數(絕對值不大於1000000),表示控制點的座標,有些控制點可能是相同的。接下來一行,乙個長度為m的字串(包含以上四種命令),表示機械人依次收到的命令。

輸出:

輸出m行,每行乙個整數,對於第i行,輸出的是第i個命令執行以後所有控制點與機械人的曼哈頓距離之和。

乍一看,暴力肯定會超時

可以坑50%資料點

不過正解也很明顯

我們一開始就把當前的曼哈頓之和先算出來

記錄行和列上的控制點的個數

把它弄乙個字首和

之後用x和y記錄當前機械人的座標

我們每次得到乙個操作,便根據情況從ans裡減掉一些,加上一些就可以了

『s』:

+ lq[y];//lq為列的字首和,hq為行的字首和,l為每列的操作點的個數,h為每行操作點的個數

- (n-lq[y]);//n為點的總數

'j':

+ n-lq[y]+l[y]

- (lq[y]-l[y])

'i':

+ hq[x]

- (n-hq[x])

'z':

+ n-hq[x]+h[x]

- (hq[x]-h[x])

標程:(請勿抄襲,後果很嚴重)

var     hq,lq,h,l:array[-1000001..1000001]of longint;

ch:char;

x,y,n,m,i,j,k,s,nx,ny:longint;

ans:int64;

begin

assign(input,'robot.in');

assign(output,'robot.out');

reset(input);

rewrite(output);

readln(n,m);

for i:=1

to n do

begin

readln(x,y);

inc(h[x]);

inc(l[y]);

ans:=ans+abs(x-0)+abs(y-0);

end;

for i:=-1000000

to1000000

dobegin

lq[i]:=lq[i-1]+l[i];

hq[i]:=hq[i-1]+h[i];

end;

nx:=0;

ny:=0;

for i:=1

to m do

begin

read(ch);

case ch of

's':

begin

ans:=ans+lq[ny];

ans:=ans-(n-lq[ny]);

inc(ny);

end;

'j':

begin

ans:=ans-(lq[ny]-l[ny]);

ans:=ans+(n-(lq[ny]-l[ny]));

dec(ny);

end;

'i':

begin

ans:=ans+hq[nx];

ans:=ans-(n-hq[nx]);

inc(nx);

end;

'z':

begin

ans:=ans-(hq[nx]-h[nx]);

ans:=ans+(n-(hq[nx]-h[nx]));

dec(nx);

end;

end;

writeln(ans);

end;

close(input);

close(output);

end.

距離度量之馬氏距離

用來度量乙個樣本點 與資料分布為 的集合的距離。假設樣本點為 資料集分布的均值為 協方差矩陣為 則這個樣本點 與資料集合的馬氏距離為 馬氏距離也可以衡量兩個來自同一分布的樣本x和y的相似性 當樣本集合的協方差矩陣是單位矩陣時,即樣本的各個維度上的方差均為 馬氏距離就等於歐式距離相等。當協方差矩陣是對...

距離度量之馬氏距離

用來度量乙個樣本點 與資料分布為 的集合的距離。假設樣本點為 資料集分布的均值為 協方差矩陣為 則這個樣本點 與資料集合的馬氏距離為 馬氏距離也可以衡量兩個來自同一分布的樣本x和y的相似性 當樣本集合的協方差矩陣是單位矩陣時,即樣本的各個維度上的方差均為 馬氏距離就等於歐式距離相等。當協方差矩陣是對...

數學基礎之曼哈頓距離,歐式距離,余弦距離

曼哈頓距離,歐式距離,余弦距離 1.曼哈頓距離 曼哈頓距離又稱馬氏距離 manhattan distance 還見到過更加形象的,叫計程車距離的。具見上圖黃線,應該就能明白。計算距離最簡單的方法是曼哈頓距離。假設,先考慮二維情況,只有兩個樂隊 x 和 y,使用者a的評價為 x1,y1 使用者b的評價...