NOIP2014 飛揚的小鳥

2021-07-03 06:45:44 字數 973 閱讀 9821

題目:

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

**:

#include 

#include

using

namespace

std;

const

int tmaxn= 10005,tmaxm=1005,inf=0x7ffffff;

int n,m,k,f[tmaxn][tmaxm],up[tmaxn],down[tmaxn],data[tmaxn][2];

void work()

}if(j>up[i-1]) //=

if(f[i][j]!=inf&&j>data[i][0]&&j1]) ok=true;

}for(j=data[i][0]+1;j1];j++)

if(ok)

if(data[i][1]!=m+1) ans++;

else;

else

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

for(j=m;j>=data[i][1];j--) f[i][j]=inf;

}ans=inf;

for(i=0;i<=m;i++)

ans=min(ans,f[n][i]);

printf("1\n%d\n",ans);

return;

}void init()

int main()

data[n][0]=0;

data[n][1]=m+1;

for(i=1;i<=k;i++)

init();

work();

/*for(i=m;i>=0;i--)

*/return

0;}

NOIP2014飛揚的小鳥

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

NOIP2014 飛揚的小鳥

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

NOIP2014 飛揚的小鳥

令f i j 表示飛翔到 i,j 的最小點選次數 f i j min f i 1 j k x i 1 k,f i 1 j y i 1 這樣做複雜度o n 2m 考慮優化這個過程,先考慮上公升的情況,則f i j 有兩類決策轉移 1.f i j f i 1 j x i 1 2.f i j min f ...