1. 程式人生 > >【jzoj4908】【NOIP2016提高組】【憤怒的小鳥】【狀態壓縮動態規劃】

【jzoj4908】【NOIP2016提高組】【憤怒的小鳥】【狀態壓縮動態規劃】

題目大意

這裡寫圖片描述

解題思路

由於點的個數很少可以狀態壓縮,我們可以找到第一個沒有覆蓋的點,再隨便列舉一個點(記得打break),兩個點就可以確定一條拋物線,再掃一遍就可以知道有哪些點被覆蓋,這個複雜度可以接受。

code

#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define LD double
#define LL long long
#define max(x,y) ((x>y)?x:y)
#define min(x,y) ((x<y)?x:y)
#define fo(i,j,k) for(int i=j;i<=k;i++) #define fd(i,j,k) for(int i=j;i>=k;i--) using namespace std; int const maxn=18; int t,n,m,ans,f[(1<<18)+10],two[20+10],inf=1e9; LD x[maxn+10],y[maxn+10]; int main(){ freopen("angrybirds.in","r",stdin); freopen("angrybirds.out","w",stdout); scanf("%d
"
,&t); two[0]=1;fo(i,1,20)two[i]=two[i-1]*2; fo(cas,1,t){ scanf("%d%d",&n,&m); fo(i,1,n)scanf("%lf%lf",&x[i],&y[i]); int maxs=(1<<n)-1,nexts;LD a,b; fo(i,1,maxs)f[i]=n; fo(i,0,maxs-1){ fo(j,1,n) if((i&two[j-1
])==0){ nexts=i+two[j-1]; f[nexts]=min(f[nexts],f[i]+1); fo(k,1,n)if(k!=j){ nexts=i+two[j-1]+(((i&two[k-1])==0)?two[k-1]:0); a=(x[k]*y[j]-x[j]*y[k])/(x[j]*x[k]*(x[j]-x[k])); if(a>=0)continue; b=(y[j]-a*x[j]*x[j])/x[j]; fo(kk,1,n) if(((nexts&two[kk-1])==0)&&(a*x[kk]*x[kk]+b*x[kk]+1e-12>y[kk]) &&(a*x[kk]*x[kk]+b*x[kk]<1e-12+y[kk]))nexts+=two[kk-1]; f[nexts]=min(f[nexts],f[i]+1); } break; } } printf("%d\n",f[maxs]); } return 0; }

相關推薦

jzoj4908NOIP2016提高憤怒小鳥狀態壓縮動態規劃

題目大意 解題思路 由於點的個數很少可以狀態壓縮,我們可以找到第一個沒有覆蓋的點,再隨便列舉一個點(記得打break),兩個點就可以確定一條拋物線,再掃一遍就可以知道有哪些點被覆蓋,

Vijos 1921 嚴厲的班長 狀態壓縮動態規劃

num con comment 數列 emoji 愛慕 狀態 -1 names 嚴厲的班長 描述 木姑娘在班級裏面是班長。雖然是副班長,卻有著比正班長更高的威信,並深受小朋友們的愛戴。 每天眼保健操時間,木姑娘都要監督所有小朋友認真做眼保健操

NOIP2016提高憤怒小鳥(狀壓寬搜)

數組保存 結果 4.0 2.0 pac 之前 第一個 ... 預處理 題目描述 Kiana最近沈迷於一款神奇的遊戲無法自拔。 簡單來說,這款遊戲是在一個平面上進行的。 有一架彈弓位於(0,0)處,每次Kiana可以用它向第一象限發射一只紅色的小鳥,小鳥們的飛行軌跡均為形如的

NOIP2016提高換教室

algorithm .org pan i++ mes ble 安排 turn 路徑 https://www.luogu.org/problem/show?pid=1850 題面很長,實質很水的一道期望DP題。題面自帶勸退效果。 首先用Floyd算出任意兩點的最短路徑。然後設

NOIP2016提高 Day1 T3 換教室

scanf spa -s 提高 i++ double -1 教室 pan 題目鏈接:https://www.luogu.org/problemnew/show/P1850 此題正解為dp。 我們先用floyd處理出任意兩個教室之間的距離,用dis[i][j]表示。

NOIP2016提高A7.16第三條跑道

以及 span const queue als TP 分析 namespace 技術分享 題目 數據範圍 分析 時限5000ms。 我們註意到\(a_{i}初始值以及x小於等於600且非零\) 也就是說,\(a_{i}\)的質因數一定小於600,而600以內的質因數只有

NOIP2016提高day2蚯蚓

AC AS orm max 可能 printf display OS 例如 題目 本題中,我們將用符號 LcJ 表示對 c 向下取整,例如: L3.0J = L3.1J = L3.9J = 3 。 蛐蛐國最近蚯蚓成災了!隔壁跳蚤國的跳蚤也拿蚯蚓們沒辦法,蛐蛐國王只好去 請神

NOIP2016提高day1?換教室

獲得 表示 牛牛 所在 進行 發現 更換 學校 而且 題目 對於剛上大學的牛牛來說,他面臨的第一個問題是如何根據實際情況申請合適的 課程。 在可以選擇的課程中,有 2n 節課程安排在 n 個時間段上。 在第 i ( 1 ≤ i ≤ n )個 時間段上,兩節內容相同的課程同時

NOIP2016提高復賽day2天天愛跑步

分享 csdn .net ons src 情況 自己的 for net 題目 小 C 同學認為跑步非常有趣,於是決定制作一款叫做《天天愛跑步》的遊戲。 《天天愛跑步》是一個養成類遊戲,需要玩家每天按時上線,完成打卡任務。 這個遊戲的地圖可以看作一棵包含 n 個結點和 n ?

NOIP2016提高day2憤怒小鳥

span math cst clas 解析式 ++ amp -- memset 分析 Kiana最近沈迷於一款神奇的遊戲無法自拔。 簡單來說,這款遊戲是在一個平面上進行的。 有一架彈弓位於 (0, 0) 處,每次Kiana可以用它向第一象限發射一只紅色的小鳥, 小鳥們的飛行

NOIP2016提高T2天天愛跑步-倍增LCA+樹上差分

測試地址:天天愛跑步 做法:這裡轉載一下我看的題解:點這裡,這裡面對於整個題的做法應該寫的很明確了,這裡就不再贅述了。我的做法是實時用倍增求出路徑兩點的LCA(當然也可以離線用Tarjan做,貌似快一點),然後用類似鄰接表的連結串列結構儲存上面題解裡面的“人”,結構體裡有四

NOIP2016提高複賽憤怒小鳥

Description Solution 很明顯是一個狀態壓縮DP的題目,不過也可以打成記憶化搜尋。 設f[i]表示每個點選或不選的狀態投射小鳥的最少方案。 首先預處理一個g[i][j]表示

NOIP2016提高天天愛跑步

題目背景 NOIP2016 提高組 Day1 T2 題目描述 小 C 同學認為跑步非常有趣,於是決定製作一款叫做《天天愛跑步》的遊戲。《天天愛跑步》是一個養成類遊戲,需要玩家每天按時上線,完成打卡任務。 這個遊戲的地圖可以看作一一棵包含 n 個結點和 n-1 條邊的樹

「洛谷1600」「NOIP2016提高」天天愛跑步樹上差分

題目 給定 nod new nlogn 否則 top class 分享圖片 閑話 為了理清這道題目的思路,我是邊寫博客邊做題的,qwq。 題目鏈接 洛谷 題解 首先對變量進行聲明 dep[i] 表示i號節點的深度,是到根節點的深度 w[i] 表示i號觀測點觀測的時間

學術篇luogu1351 [NOIP2014提高] 聯合權值

https mat 父親 ans 級別 pop isp etc 取模 一道提高組的題。。。。。 傳送門:題目在這裏。。。。 現在都懶得更自己的blog了,怕是太頹廢了_ (:з」∠) _ 好久沒做題了,手都生了。(好吧其實是做題方面手太生了) 這題我都不想講了,把代碼一貼就

動態規劃Vijos P1143 三取方格數(NOIP2000提高

題目連結: 題目大意:   NxN的矩陣,每個值只能取一次,從(1,1)走到(n,n)走三次能取得的最大值。 題目思路:   【動態規劃】   f[x1][y1][x2][x3]表示第一次走x1,y

jzoj5350NOIP2017提高A模擬9.7陶陶摘蘋果動態規劃

description solution 題目的意思是板凳不可重疊,資料不能直接摘蘋果。對蘋果排序,對凳子按r從小到大排序。設f[i][j]表示前i個凳子,選了j個,最後一個選了i的最大貢獻,列

尤拉路,dfsDay 8 提高模擬C T2 太鼓達人

題目大意 給定一個數kk,求出所有二進位制下收尾相連的每個長度為kk的子串不重複且相鄰的字典序最小的排列方案及其長度 解題思路 顯然第一問就是2k2k 對於第二問,可以暴力搜尋,或者走尤拉路,因為每個點之間都必須相鄰且不能重複,所以相當於走一遍歐拉回

Java滾動數動態規劃UVA - 11137 - Ingenuous Cubrency

得到 lose math scanner light clas details 狀態 ann 滾動數組優化自己畫一下就明白了。 http://blog.csdn.net/u014800748/article/details/45849217 解題思路:本題利用遞推關系解決。