題目:
分析:乙個揹包問題。[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 ...