bzoj3210 花神的澆花集會 旋轉座標系

2022-05-20 10:07:08 字數 1047 閱讀 7734

題目描述

在花老師的指導下,每週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題解

數論題目所求的是切比雪夫距離,我們可以將點$(x,y)$旋轉為點$(x+y,x-y)$,這樣原圖中的切比雪夫距離就變為了新圖中的曼哈頓距離。

然後橫縱座標分開處理,即求使$|x-p_1|+|x-p_2|+...+|x-p_n|$最小的x,由數論知識可知$x$為$p_1,p_2,...,p_n$的中位數。

最後得到乙個新圖中的點$(x,y)$,如果這個點合法即為答案,如果不合法(即沒有原圖中合法的點旋轉後得到它,即x與y的奇偶性不同),則需要嘗試其相鄰的4個點,取距離最小值即為答案。

#include #include #include #define n 100010

using namespace std;

typedef long long ll;

int n , px[n] , py[n];

ll solve(int x , int y)

int main()

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...