仔細思考可以發現,這個題目應該是可以狀壓dp的。
(又是dp ,今年考了兩道dp,還都是新型別)
f[s]表示被覆蓋的狀態為s的最少豬數,然後預處理乙個g[i][j]表示選擇了i和j之後的拋物線經過的豬的狀態集合(是乙個01狀態),如g[3][5]=(21
)10=(
10101)2
表示經過第3、5只豬的拋物線可以打到第第1,3,5只豬。
容易得出:
f[s|g[i][j]]=min(f[s|g[i][j]],f[s]+1)
這是狀壓dp的經典做法。
時間複雜度o(
t∗n2
∗2n)
.
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int n=20;
const
int m=1
<<20;
const
double eps=1e-10;
int t,n,m;
int g[n][n],dp[m];
double x[n],y[n];
void calc(int i,int j)
}int main()
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 憤怒的小鳥
這道題看到資料範圍,我們就知道 小於等於18,一定使用狀態壓縮,即o 2 n 乙個東西 在算一下,我們發現,像noip這種考試,一定會考卡常數的題,所以瞬間得出這道題的演算法是o 2 n n 2 cases 顯然這道題我們可以當做直線來做 y a x 2 b x可以合併同類項得y x a x b 那...