BZOJ 3210 花神的澆花集會

2022-04-30 03:27:10 字數 1303 閱讀 1584

bzoj_3210_花神的澆花集會_切比雪夫距離

在花老師的指導下,每週4都有乙個集會活動,俗稱「澆水」活動。

具體澆水活動詳情請見bzoj3153

但這不是重點

花神為了準備澆花集會的題,必須找一道盡量適合所有人的題

現在花神知道每個人的**能力x和演算法能力y,一道題(**難度x演算法難度y)對這個人的不適合度為    max ( abs ( x – x ) , abs ( y – y ) )

也就是說無論太難還是太簡單都會導致題目不適合做(如果全按花神本人能力設題,絕對的全場爆0的節奏,太簡單,則體現不出花神的實力)

當然不是每次都如花神所願,不一定有一道題適合所有人,所以要使所有人的不合適度總和盡可能低

花神出了100001*100001道題,每道題的**難度和演算法難度都為0,1,2,3,……,100000

第一行乙個正整數n,表示花神有n個學生,花神要為這n個學生選一道題

接下來n行,每行兩個空格隔開的整數x[i],y[i],表示這個學生的**能力和演算法能力

乙個整數,表示最小的不合適度總和

31 2

2 13 3

3對於100%的資料,n<=100000,0<=x[i],y[i]<=100000

可以發現不合適度用的是切比雪夫距離。

於是把(x,y)變成(x-y,x+y)轉化為曼哈頓距離求解。

如果是曼哈頓距離就可以把橫縱座標分開來求。

可以用數學方法證明排序後中位數最優。

但有可能答案(x,y)不能用原來座標為整數的點表示。

出現這種情況需要用(x,y-1),(x,y+1),(x-1,y),(x+1,y)幾個點帶進去取個min。

**:

#include #include #include using namespace std;

#define n 100050

typedef long long ll;

int xx[n],yy[n],n;

ll ans;

int fabs(int x)

ll solve(int x,int y)

int main()

sort(xx+1,xx+n+1);

sort(yy+1,yy+n+1);

x=xx[n+1>>1],y=yy[n+1>>1];

if(x%2==y%2) printf("%lld\n",solve(x,y));

else printf("%lld\n",min(solve(x-1,y),min(solve(x+1,y),min(solve(x,y-1),solve(x,y+1)))));

}

bzoj3210 花神的澆花集會

給你n個點,要你求乙個點,橫縱座標是範圍在0到100000之間的整數,使得該點到所有給定的點的切比雪夫距離最小。n 100000 0 座標範圍 100000 首先兩個點 x1,y1 x2,y2 的切比雪夫距離為ma x x 1 x2 y 1 y2 然後把每個點的座標變成 x y,x y 兩個點切比雪...

bzoj 3210 花神的澆花集會

題意 平面上n個點求一點使所有點到它的切比雪夫距離最小。題解 先把切比雪夫距離轉化成曼哈頓距離 把 x,y 變為 x y,x y 新點間的曼哈頓距離的一半就是原點的切比雪夫距離。曼哈頓距離的兩維沒有聯絡,所以最小的點的橫座標和縱座標可以分開求。很明顯,要使絕對值的和最小,點肯定在中位數上。但是因為x...

bzoj3210 花神的澆花集會

根據網上題解可得 qaq。把座標變成 x y,x y 後,原本的切比雪夫距離就是現在的曼哈頓距離的一半。似乎金組題裡也有道一模一樣的。分別求出橫縱座標的中位數。但如果所取的點的x y奇偶性不同。那在原圖裡是沒有對應點的。所以可能要再試一下旁邊的四個點 1 include2 include3 incl...