飛揚的小鳥(NOIP2014)(喪病DP題)

2022-05-16 04:32:29 字數 1165 閱讀 3596

原題傳送門

剛開始我還以為這道題目非常的簡單。。

然後隨便打了乙個dp,直接wa,被zxyer狠狠地d了一頓。

然後發現有好多細節。。

首先假如某橫座標沒有管子,那麼l[x]=0;h[x]=m+1;

然後dp的時候往上是完全揹包,往下是01揹包。

由於不能接觸到管子,所以0~l[x]和h[x]~m要設值inf方便下面判斷。

m-max(q)*x[i]~m也要特判,因為有限高。。

最後統計答案也是很醉、。、

下面貼**。。

#include#include

#include

#include

#include

#define inf ((1<<31)-2)

using

namespace

std;

int f[10001][1001

]; int

n,m,k,ans;

int x[10001],y[10001

]; int l[10001],h[10001

]; int

main()

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

for(int j=0;j<=m;j++)f[i][j]=inf;

f[0][0]=inf;

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

if(j==m)

} }

for(int j=l[i]+1;j)

if(j+y[i-1]<=m)

f[i][j]=min(f[i][j],f[i-1][j+y[i-1

]]);

for(int j=1;j<=l[i];j++)

f[i][j]=inf;

for(int j=h[i];j<=m;j++)

f[i][j]=inf;

} int cnt=k,ans=inf;

for(int i=n;i>=1;i--)

if(cnt==k)

printf(

"1\n%d\n

",ans);

else

printf(

"0\n%d\n

",cnt);

return0;

}

NOIP2014 飛揚的小鳥

題目 分析 乙個揹包問題。i,j 是跳上來的情況時 可以由 i,j k 得到,則問題得到解決。注意 f陣列要先進行上公升操作,再進行下降操作,否則 i,j k 有可能是下降得到的,從而得到錯解 吸取我的教訓吧,調了好長時間 include include using namespace std co...

NOIP2014飛揚的小鳥

天哪細節問題調了乙個鐘,手速不夠快思路不夠清晰寫了乙個鐘,感覺一道第三題就要花掉我2個鐘那我比賽的時候腫麼辦qaq 說下這道題,首先純暴力,70分到手,然後我們把01揹包的轉移變成有上界的完全揹包,還有一些特殊情況特殊轉移,還是比較好看的,去年比賽不知是電腦問題還是什麼一直沒輸出,蠢到家了然後這題爆...

NOIP2014 飛揚的小鳥

傳送門 為了簡化問題,我們對遊戲規則進行了簡化和改編 1.遊戲介面是乙個長為n,高 為m的二維平面,其中有k個管道 忽略管道的寬度 2.小鳥始終在遊戲介面內移動。小鳥從遊戲介面最左邊任意整數高度位置出發,到達遊戲介面最右邊時,遊戲完成。3.小鳥每個單位時間沿橫座標方向右移的距離為1,豎直移動的距離由...