Luogu1941 飛揚的小鳥

2022-07-24 00:03:18 字數 1015 閱讀 1210

這題的 dp 還是比較顯然的

聽說是個完全揹包,大概轉移是差不多的

就從當前層順著列舉 j 往大去更新同層的就好了

其實這樣每次往高處轉移的就是下面的字首最小值

值得注意的是題意要模擬的是遊戲

所以顯然不能先掉下去在在同一步中往上飛

所以轉移順序是不能亂的

就是先轉移往上飛的在轉移往下掉的

好像多開一維也行,不過沒有必要了

**:

#include #include #include #include #include #include #include using namespace std;

const int max_n = 10005, max_m = 1005;

int n, m, k, max_dst;

int x[max_n], y[max_n], pos[max_n], pre_sum[max_n];

int bot[max_n], top[max_n], f[max_n][max_m];

bool has_stk[max_n];

int main()

for (int i = 1; i < n; ++i) pre_sum[i] = pre_sum[i - 1] + has_stk[i];

memset(f, 0x3f, sizeof(f));

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

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

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

for (int j = 1; j <= m - y[i]; ++j)

if (has_stk[i])

}register int min_res = 0x3f3f3f3f;

if (!has_stk[n])

} else

}if (max_dst == n) else

return 0;

}

luogu 1941 飛揚的小鳥

這道題對於第13個資料點,不知為什麼f陣列第二位開到2000以下就不能過,求指教 傳送門 乙個小鳥在 n m 的方陣裡,然後有許多管道你們玩過就不多介紹了,然後每乙個位置,點選會上公升,不點選可以下降,點選效果可以疊加。求如果通關的最小點選次數,否則會最多通過多少個管道。就是搜尋,本以為會拿50pt...

Luogu 飛揚的小鳥

bfs or dp include using namespace std const int n 1e4 10 define gc getchar define oo 99999999 struct node 1 p n struct node 2 m n struct node intn,m,k...

P1941 飛揚的小鳥

定義dp i j 表示走到座標 i,j 時的最小點按次數。考慮遞推關係,能走到座標 i,j 一種情況是從前乙個位置下降上公升的轉移是乙個完全揹包,下降是01揹包。include using namespace std define ll long long define inf 0x3f3f3f d...