NOIP2016 憤怒的小鳥

2021-08-10 12:47:22 字數 752 閱讀 1895

這道題看到資料範圍,我們就知道:小於等於18,一定使用狀態壓縮,即o(2^n*乙個東西),在算一下,我們發現,像noip這種考試,一定會考卡常數的題,所以瞬間得出這道題的演算法是o(2^n*n^2*cases).

顯然這道題我們可以當做直線來做:y=a*x^2+b*x可以合併同類項得y=x*(a*x+b),那麼,我們就把y/x當做y,即y=k*x+b.

#include

#include

#include

#include

using namespace std;

const int inf=0x3f3f3f3f;

const long double eps=1e-9;//它應該會有一些

精度誤差,所以我們要避免這種情況

long double x[25],y[25];

int f[(int)(1<<18+5)],g[22][22];

int multi[25];

long double k,b;

int n,m,cases;

int s;

int main()

while(cases--)

k=(y[j]-y[i])/(x[j]-x[i]);

b=y[j]-x[j]*k;//算出這條直線的k和b

if(k<0)

}s=1else}}

}printf("%d\n",f[s-1]);

}return 0;

}

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憤怒的小鳥

設dp s 表示已經打了的豬的的序號組成的集合,那麼我們列舉乙個i表示這一次要打個豬,然後再列舉乙個j,表示這一次把i和j一起打掉,那麼預處理乙個bit陣列使得bit i j 表示以i和j的座標確定的拋物線可以打掉的所有的豬,那麼就由dp s 1轉移到了dp s bit i j 了,最後的答案就是d...