這道題還有另外一種版本叫天神下凡,屬於模擬題,可是模擬題資料太水以至於模擬題a了都不一定在vijos上a。。。。
在模擬題裡我用的是一種類似掃瞄線的方式,完美ac,然後在vijos上就是只能過2組
最後經同學提點改為遞迴才a了
這道題我們把圓看成線段,所以這題就是線段覆蓋,然後答案是被完全覆蓋的線段數+所有線段數+1
被完全覆蓋的線段的數量就用遞迴找,不斷的找被當前線段完全包含的線段,然後判斷是否在裡面
然後這道題有一種特殊情況可以不用執行程式,就是所有圓都是同心圓的時候,因為這種狀態只存在重合和包含(本題重合不算完全覆蓋),直接輸出圓的數量+1即可
1 #include2 #include3 #include4 #include5 #include6view code#define maxn 300005
7#define ll long long
8using
namespace
std;910
ll n,cnt,can,ans;
11struct
nodee[maxn];
1415
ll read()
18while(ch>='
0'&&ch<='9')
19return xx*ff;20}
2122
intcmp(node a,node b)return a.l
2728
intt;
29int
check (ll id)
36if(now!=e[id].r )add=0;37
return
1+ret+add;38}
3940
intmain()
49if(!can)//
同乙個圓心可以不管了
50 sort(e+1,e+n+1,cmp);t=1;51
while(t!=n+1
) ans=ans+1
;54 cout<
55 }
然後這道題還有乙個解法就是線段樹,因為不存在相交的情況,所以不需要使用lazy標記,沒有lazy標記的線段樹就很簡單了
但是要注意一點就是這些左右端點在座標軸上,座標軸有可能很大,所以要用到離散化
vijos1883 月光的魔法
背景 影幾欺哄了眾生了 天以外 月兒何曾圓缺 描述 有些東西就如同月光的魔法一般.luke是愛著vijos的.他想為自己心愛的東西畫些什麼.就畫n個圓吧.把它們的圓心都固定在x軸上.圓與圓.為了愛,兩兩不能相交.為了愛,它們可以互相貼在一起.內切或外切,都是允許的.vijos的美麗,在於人心.vij...
P1883函式題解
這道題是說在 0,1000 中找到乙個值,使得在所有函式中這個值所對應的最大值最小 可能描述的不清楚,詳細看題目 通過畫圖發現,如果將最大值連線起來的話,那麼所有的點將連成乙個類似二次函式的影象,於是我們可以採用三分的方法,如果進行暴力列舉的話會超時,所以使用三分法。為什麼不用二分呢?二分是不能夠判...
洛谷 P1883 函式
給定n個二次函式f1 x f2 x fn x 均形如ax 2 bx c 設f x max,求f x 在區間 0,1000 上的最小值。輸入格式 輸入第一行為正整數t,表示有t 組資料。每組資料第一行乙個正整數n,接著n行,每行3個整數a,b,c 用來表示每個二次函式的3個係數,注意二次函式有可能退化...