大體題意:
你要從左下角走到右上角,但是安裝了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 的罪犯被關押在同一監獄,他...