哇這是第乙個部落格~~~~~~~
直接說思路
首先把每個點從左到右排序
然後要把兩個圓的位置關係想好,可以想到圓心位置座標必然是單調遞增的
然後想好怎麼遞推這個最小數目
然後開始列舉
列舉到某個點的時候先判斷是否被前面相鄰的圓包含,包含了就直接跳過
然後使用乙個單調棧維護圓心位置座標
因為每個元素頂多入棧一次,出棧一次
所以時間複雜度是o(n)的
**就醬紫
#include#include//把兩個等圓的位置想透徹即可
#include#include#include#include#include#include#include#include#includeusing namespace std;
#define up(i,a,b) for(int i=a;i<=b;i++)
#define down(i,a,b) for(int i=a;i>=b;i--)
#define cmin(a,b) a=min(a,b);
#define cmax(a,b) a=max(a,b);
#define ll long long
#define out(x) coutinline int read()
while(isdigit(ch))
return x*f;
}void init()
sort(a+1,a+n+1,mycmp);
s[0]=-1600;
}void work()
out(end)
}int main()
HAOI2014 走出金字塔
找規律。不過為了方便,每次我們計算入口和某乙個出口之間需要花費的體力值的時候,不妨把x較小的假設成塔頂,這樣的話另乙個就不需要分類討論了。詳細請看 include include include include include define maxn 1000010 using namespace ...
haoi2014 走出金字塔
在探險的過程中,考古學家dr.kong 無意地被困在乙個金字塔中。金字塔中的每個房間都是三角形。dr.kong可以破壁走到相鄰的房間去。例如,如果他目前處於三角形 2,2 房間,那麼他可以破壁走到三角形 2,1 2,3 或 1,1 房間。但破壁一面牆需要花費k分鐘時間,而考古學家dr.kong 的體...
HAOI2014 走出金字塔 找規律
給定乙個金字塔,有 n 層,m 個出口,破一面牆的時間為 k s 表示體能維持時間。問能否走出,且走出後剩餘的時間。列舉每個出口,試圖計算從每個出口出去的時間 而這就是計算一對點之間的最短路,考慮將最上面那麼點設為塔頂,設它原來的座標為 x 0,y 0 兩者的座標差為 delta x,delta y...