1. 程式人生 > 其它 >Guard Towers (二分圖+二分答案,曼兒哈頓舉例—》轉化成切比雪夫距離-》進而用圖形解決)

Guard Towers (二分圖+二分答案,曼兒哈頓舉例—》轉化成切比雪夫距離-》進而用圖形解決)

題目描述
In a far away kingdom lives a very greedy king. To defend his land, he built nn guard towers. Apart from the towers the kingdom has two armies, each headed by a tyrannical and narcissistic general. The generals can't stand each other, specifically, they will never let soldiers of two armies be present in one tower.
During defence operations to manage a guard tower a general has to send part of his army to that tower. Each general asks some fee from the king for managing towers. As they live in a really far away kingdom, each general evaluates his fee in the following weird manner: he finds two remotest (the most distant) towers, where
the soldiers of his army are situated and asks for the fee equal to the distance. Each tower is represented by a point on the plane with coordinates (x,y)(x,y) , and the distance between two points with coordinates (x_{1},y_{1})(x 1 ​ ,y 1 ​ ) and (x_{2},y_{2})(x 2 ​ ,y 2 ​ ) is determined in
this kingdom as |x_{1}-x_{2}|+|y_{1}-y_{2}|∣x 1 ​ −x 2 ​ ∣+∣y 1 ​ −y 2 ​ ∣ . The greedy king was not exactly satisfied with such a requirement from the generals, that's why he only agreed to pay one fee for two generals, equal to the maximum of two demanded fees. However, the king is still green with greed, and among all the ways to arrange towers between armies, he wants to find the cheapest one. Each tower should be occupied by soldiers of exactly one army. He hired you for that. You should find the minimum amount of money that will be enough to pay the fees. And as the king is also very scrupulous, you should also count the number of arrangements that will cost the same amount of money. As their number can be quite large, it is enough for the king to know it as a remainder from dividing by 10^{9}+710 9 +7 . Two arrangements are distinct if the sets of towers occupied by soldiers of the first general are distinct. 輸入格式 The first line contains an integer nn ( 2<=n<=50002<=n<=5000 ), nn is the number of guard towers. Then follow nn lines, each of which contains two integers x,yx,y — the coordinates of the ii -th tower (0<=x,y<=5000)(0<=x,y<=5000) . No two towers are present at one point. Pretest 6 is one of the maximal tests for this problem. 輸出格式 Print on the first line the smallest possible amount of money that will be enough to pay fees to the generals. Print on the second line the number of arrangements that can be carried out using the smallest possible fee. This number should be calculated modulo 10000000071000000007 ( 10^{9}+710 9 +7 ). 題意翻譯 題目大意 已知n座塔的座標,n<=5000 把他們分成兩組,使得同組內的兩座塔的曼哈頓距離的最大值最小 在此前提下求出有多少種分組方案 mod10^9+7 輸入格式 第一行一個n 後面n行為每個點的座標 輸出格式 第一行為最小花費 第二行為方案數 感謝@moye到碗裡來 提供的翻譯 輸入輸出樣例 輸入 #1複製 2 0 0 1 1 輸出 #1複製 0 2 輸入 #2複製 4 0 0 0 1 1 0 1 1 輸出 #2複製 1 4 輸入 #3複製 3 0 0 1000 1000 5000 5000 輸出 #3複製 2000 2 說明/提示 In the first example there are only two towers, the distance between which is equal to 2. If we give both towers to one general, then we well have to pay 2 units of money. If each general receives a tower to manage, to fee will be equal to 0. That is the smallest possible fee. As you can easily see, we can obtain it in two ways.
View problem

 

法1:

比雪夫距離:  (x,y)=(x+y,x-y)(x,y)=(x+y,xy),

曼哈頓距離:|x_1-x_2|+|y_1-y_2|x1x2+y1y2

切比雪夫距離:\max\{|x_1-x_2|,|y_1-y_2|\}max{x1x2,y1y2}。

  1. 用大矩形先把所有點包裹起來
  2. 在用2個正方形(分2種情況即2個對角線)把這些點給包裹起來。(掃描點,看那個點離角落比較近,就去那個正方體。)
  3. 重疊的有那幾個點就有2^N次方個解決方案。(有些情況需要特判)

 

法2:

利用二分圖+二分答案:

  • 在超過了距離就連線條邊
  • 染色判斷是否為二分圖
  • 有多少個連通塊就有2^N次方個解決方案。