noip2016 憤怒的小鳥

2022-05-29 08:48:09 字數 1393 閱讀 7096

憤怒的小鳥

題目描述

kiana 最近沉迷於一款神奇的遊戲無法自拔。簡單來說,這款遊戲是在乙個平面上進行的。

有一架彈弓位於 (0,0) 處,每次 kiana 可以用它向第一象限發射乙隻紅色的小鳥,小鳥們的飛行軌跡均為形如 y=ax2+bx 的曲線,其中 a,b 是 kiana 指定的引數,且必須滿足 a<0。

當小鳥落回地面(即x軸)時,它就會瞬間消失。

在遊戲的某個關卡裡,平面的第一象限中有 n 只綠色的小豬,其中第 i 只小豬所在的座標為 (xixi,yiyi) 。

如果某只小鳥的飛行軌跡經過了(xixi,yiyi),那麼第 i 只小豬就會被消滅掉,同時小鳥將會沿著原先的軌跡繼續飛行;

如果乙隻小鳥的飛行軌跡沒有經過(xixi,yiyi),那麼這只小鳥飛行的全過程就不會對第 i 只小豬產生任何影響。

例如,若兩隻小豬分別位於 (1,3) 和 (3,3) ,kiana 可以選擇發射乙隻飛行軌跡為 y=-x2+4x 的小鳥,這樣兩隻小豬就會被這只小鳥一起消滅。

而這個遊戲的目的,就是通過發射小鳥消滅所有的小豬。

這款神奇遊戲的每個關卡對 kiana 來說都很難,所以 kiana 還輸入了一些神秘的指令,使得自己能更輕鬆地完成這個遊戲。這些指令將在【輸入格式】中詳述。

假設這款遊戲一共有 t 個關卡,現在 kiana 想知道,對於每乙個關卡,至少需要發射多少只小鳥才能消滅所有的小豬。由於她不會算,所以希望由你告訴她。

可以爆搜也可以狀壓dp

先列舉兩隻豬的情況,看是不是開口向下的拋物線,再列舉第三隻豬,利用玄學行列式計算是否在這條拋物線上

其他的就是狀壓dp的基操了

#include#include

#include

#include

#include

#include

#define ll long long

using

namespace

std;

const

int maxn=262150

;inline

intread()

while(ch>='

0'&&ch<='9')

return k*x;

}int

t,n,m,f[maxn];

double x[20],y[20

];void pd(int

x)bool

in(int i,int j,int

k)int

main()

for(int i=0;i)

}pd(b);}}

}cout

<1

<1]<

}return0;

}

view code

NOIP 2016 憤怒的小鳥

題目描述 kiana最近沉迷於一款神奇的遊戲無法自拔。簡單來說,這款遊戲是在乙個平面上進行的。有一架彈弓位於 0,0 處,每次kiana可以用它向第一象限發射乙隻紅色的小鳥,小鳥們的飛行軌跡均為形如y ax 2 bx的曲線,其中a,b是kiana指定的引數,且必須滿足a 0。當小鳥落回地面 即x軸 ...

NOIP2016 憤怒的小鳥

時間限制 1 sec 記憶體限制 128 mb kiana最近沉迷於一款神奇的遊戲無法自拔。簡單來說,這款遊戲是在乙個平面上進行的。有一架彈弓位於 0,0 處,每次kiana可以用它向第一象限發射乙隻紅色的小鳥,小鳥們的飛行軌跡均為形如y ax 2 bx的曲線,其中a,b是kiana指定的引數,且必...

NOIP2016 憤怒的小鳥

這道題看到資料範圍,我們就知道 小於等於18,一定使用狀態壓縮,即o 2 n 乙個東西 在算一下,我們發現,像noip這種考試,一定會考卡常數的題,所以瞬間得出這道題的演算法是o 2 n n 2 cases 顯然這道題我們可以當做直線來做 y a x 2 b x可以合併同類項得y x a x b 那...