NOIP2016提高組day2 憤怒的小鳥

2022-08-18 05:12:08 字數 1410 閱讀 1418

kiana最近沉迷於一款神奇的遊戲無法自拔。 簡單來說,這款遊戲是在乙個平面上進行的。 有一架彈弓位於 (0, 0) 處,每次kiana可以用它向第一象限發射乙隻紅色的小鳥, 小鳥們的飛行軌跡均為形如 y = ax2 + bx 的曲線,其中 a, b 是kiana指定的引數,且必須 滿足 a < 0 。 當小鳥落回地面(即 x 軸)時,它就會瞬間消失。 在遊戲的某個關卡裡,平面的第一象限中有 n 只綠色的小豬,其中第 i 只小豬所在的座標為 (xi, yi) 。 如果某只小鳥的飛行軌跡經過了 (xi, yi) ,那麼第 i 只小豬就會被消滅掉,同時小鳥將會沿著原先的軌跡繼續飛行; 如果乙隻小鳥的飛行軌跡沒有經過 (xi, yi) ,那麼這只小鳥飛行的全過程就不會對 第 i 只小豬產生任何影響。 例如,若兩隻小豬分別位於 (1, 3) 和 (3, 3) ,kiana可以選擇發射乙隻飛行軌跡為y = −x2 + 4x 的小鳥,這樣兩隻小豬就會被這只小鳥一起消滅。 而這個遊戲的目的,就是通過發射小鳥消滅所有的小豬。 這款神奇遊戲的每個關卡對kiana來說都很難,所以kiana還輸入了一些神秘的指令,使得自己能更輕鬆地完成這個遊戲。 這些指令將在【輸入格式】中詳述。 假設這款遊戲一共有 t 個關卡,現在kiana想知道,對於每乙個關卡,至少需要發射多少只小鳥才能消滅所有的小豬。 由於她不會算,所以希望由你告訴她。

首先先求出每個點兩兩之間的函式解析式,並且求出這個解析式還能消滅那只豬。

狀壓揹包,

設\(f_s\)表示狀態為s的最小值(其中s為二進位制數,表示每只豬有沒有被消滅)

轉移方程很簡單\(f_=min(f_,f_s+1)\)

時間複雜度\(o(2^n·n^2)\)

對了,注意精度

#include #include #include #include #include #include #include const int maxlongint=2147483647;

const int mo=1000000007;

const int n=550005;

using namespace std;

int f[n],b[20][20],n,m,t,d[500],mi[n];

double a[n][2],a1,b1;

int min1(int x,int y)

int main()

scanf("%d",&t);

for(;t--;)}}

} d[0]=0;

for(int i=1;i<=n;i++)

for(int j=1;j<=n;j++)

for(int i=1;i<=d[0];i++)

for(int s=0;s<=mi[n]-1;s++)

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

}}

NOIP2016提高組day2 蚯蚓

本題中,我們將用符號 lcj 表示對 c 向下取整,例如 l3.0j l3.1j l3.9j 3 蛐蛐國最近蚯蚓成災了!隔壁跳蚤國的跳蚤也拿蚯蚓們沒辦法,蛐蛐國王只好去 請神刀手來幫他們消滅蚯蚓。蛐蛐國裡現在共有 n 只蚯蚓 n 為正整數 每只蚯蚓擁有長度,我們設第 i 只匠 蚓的長度為 ai i ...

NOIP 2016 提高組 Day2 組合數問題

是我想起了有一年考過相似的題目 當時用的是楊輝三角。思路 遞推 矩陣字首和 關於矩陣字首和 c n,m c n 1,m c n 1,m 1 就可以直接遞推出2000以內的所有的組合數。而我們只需要判斷有多少個點對滿足是k的倍數,很容易想到只要對k取模,對於為0的c i,j 是肯定滿足是k的倍數的。因...

NOIP2016提高組 day2 組合數問題

總所周知 階乘int到14就爆了long long到20也就爆了,所以說直接存肯定是不行的 在觀察一下題目發現試求組合數是k的倍數,所以說可以把k作為mod,餘數為零肯定就是k的倍數啦,否則不是。又因為由二項式定理 易得二項式展開的每一項就包涵組合數的答案。我們又已知楊輝三角其實就是二項式的係數恰好...