vijos1883 月光的魔法《遞迴》

2022-05-07 10:39:09 字數 1139 閱讀 7283

這道題還有另外一種版本叫天神下凡,屬於模擬題,可是模擬題資料太水以至於模擬題a了都不一定在vijos上a。。。。

在模擬題裡我用的是一種類似掃瞄線的方式,完美ac,然後在vijos上就是只能過2組

最後經同學提點改為遞迴才a了

這道題我們把圓看成線段,所以這題就是線段覆蓋,然後答案是被完全覆蓋的線段數+所有線段數+1

被完全覆蓋的線段的數量就用遞迴找,不斷的找被當前線段完全包含的線段,然後判斷是否在裡面

然後這道題有一種特殊情況可以不用執行程式,就是所有圓都是同心圓的時候,因為這種狀態只存在重合和包含(本題重合不算完全覆蓋),直接輸出圓的數量+1即可

1 #include2 #include3 #include4 #include5 #include6

#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 }

view code

然後這道題還有乙個解法就是線段樹,因為不存在相交的情況,所以不需要使用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個係數,注意二次函式有可能退化...