這道題是一道典型的二分
//就是判斷有點麻煩——蒟蒻
題目說:兩個點a、b連通,記作e(a,b),當且僅當a、b的擴散區域有公共部分。
連通塊的定義是塊內的任意兩個點u、v都必定存在路徑e(u,a0),e(a0,a1),…,e(ak,v)。
也就是說乙個點擴散到另乙個點的 時間 就是他們的橫縱座標差值的和(xi-xj)+ ( yi-yi )
如果 時間2 就說明兩個塊連通(注意mid要2,因為兩個點同時擴散)
然後用並查集儲存連通塊
上**:
#include
using namespace std;
const
int max =
100;
int n;
struct nodea[max]
;int dis[max]
[max]
,f[max]
;inline
intread()
while
(ch >= 『0』 && ch <= 『9』)
return s * w;
}//快讀
intfind
(int x)
void
unionn
(int x,
int y)
bool ok
(int mid)
return true;
}int
main()
int l =
1,r =
1e9;
while
(l < r-1)
//正常的二分
cout << r << endl;
return0;
}
洛谷 1437 敲磚塊 DP
題意 中文題 題解 先旋轉三角形。然後要打掉第i行第j個,就要打掉第i行第j 1個和第i 1行第j 1個。所以到第i,j元素時,對於第i行,前j都被打掉,後面的都沒被打掉。但是對於第i 1行,前j 1一定被打掉,但後面的可以被打掉,也可以不打掉。所以狀態轉移就很好寫了。include include...
洛谷P1661 資訊奧賽一本通1437 擴散
洛谷 資訊奧賽一本通 時間限制 1000 ms 記憶體限制 65536 kb 提交數 676 通過數 347 乙個點每過乙個單位時間就會向四個方向擴散乙個距離,如圖。兩個點a a b b 連通,記作e a b e a,b 當且僅當a a b b的擴散區域有公共部分。連通塊的定義是塊內的任意兩個點u ...
洛谷P2002訊息擴散
傳送門啦 這個題就是tarjan強連通分量與入度的例題了。思路 利用縮點的思想,先預處理一下所有的強連通分量,然後把每個強連通分量內的所有節點看做乙個節點,然後處理一張新圖,然後檢查每個點的入度,然後取入度為 0 的點 縮點後 的個數,即為資訊出發點。可能有人想問為什麼?大體說明一下 1.充分性證明...