UVALive 4035 二分 並查集

2021-12-29 21:24:49 字數 901 閱讀 6997

大體題意:

你要從左下角走到右上角,但是安裝了k (k <= 100)個監視器 每個監視器監察的範圍都是一樣的,但是會統一變化的,監察範圍的計算 不是距離而是 |x1-x2| + |y1-y2|這樣算,告訴你每個監視器範圍的概率,問你能逃脫的概率?

思路:只要能夠從左邊或者上邊出發 找一系列連續的監視器 鏈結到右邊或者下邊 我們就逃不了! 因此我們先給每個監視器按照範圍排序,找乙個合理的值 前面的肯定都符合 後面肯定都不行!

難點就是判斷這個半徑行不行,方法是並查集,把左上邊看成乙個點,把右下邊看成另乙個點,其餘監視器都是點,能相連就相連 最後如果發現左上邊和右下邊相連肯定就不行了!

詳細見**:

#include

#include

#include

using namespace std;

int t, m, n, k;

const int dr = 305;

const int ul = 306;

struct node

void read()

}p[107];

struct pointp2[307];

int fa[307];

int find(int x)

void add(int x,int y)

}void init()

int aaa(int x)

int dist(int i,int j)

bool judge(int r)

for (int i = 0; i < k; ++i)

}return find(ul) != find(dr);

}int search()

return ans;

}int main()

return 0;

}

uvalive3971(二分 貪心)

題目的意思是 你要去買一台電腦,然後有很多種零件,你每種零件買乙個 零件給出的的資訊有種類,名字,質量.你組裝的電腦的質量,取決於你的零件中質量最差的,也就是你要讓最差值盡量大,但是 不能超出你的budget,也就是你有的錢.把零件按質量從大到小排,然後從大到小判斷這個質量能不能作為最小值.知道找到...

UVALive 4976(二分查詢)

乙個dp題。複雜度是n logn n是for迴圈從0到n遍歷,logn是二分查詢 思路 預處理 從前往後掃一遍,更新pre陣列 記錄每乙個元素是子串中連續上公升的第幾個,如果a i a i 1 則a i 1.否則a i a i 1 1,a i 是題目給的 從後往前掃一遍,更新aft陣列 記錄每乙個元...

關押罪犯 並查集 二分

s 城現有兩座監獄,一共關押著n 名罪犯,編號分別為1 n。他們之間的關係自然也極不和諧。很多罪犯之間甚至積怨已久,如果客觀條件具備則隨時可能爆發衝突。我們用 怨氣值 乙個正整數值 來表示某兩名罪犯之間的仇恨程度,怨氣值越大,則這兩名罪犯之間的積怨越多。如果兩名怨氣值為c 的罪犯被關押在同一監獄,他...