noip2014 飛揚的小鳥

2022-08-22 00:30:12 字數 1794 閱讀 3754

題目描述

為了簡化問題,我們對遊戲規則進行了簡化和改編:

遊戲介面是乙個長為 n,高為 m 的二維平面,其中有 k個管道(忽略管道的寬度)。

小鳥始終在遊戲介面內移動。小鳥從遊戲介面最左邊任意整數高度位置出發,到達遊戲介面最右邊時,遊戲完成。

小鳥每個單位時間沿橫座標方向右移的距離為 1,豎直移動的距離由玩家控制。如果點選螢幕,小鳥就會上公升一定高度 x,每個單位時間可以點選多次,效果疊加;如果不點選螢幕,小鳥就會下降一定高度 y。小鳥位於橫座標方向不同位置時,上公升的高度 x和下降的高度 y可能互不相同。

小鳥高度等於 0或者小鳥碰到管道時,遊戲失敗。小鳥高度為 m時,無法再上公升。

現在,請你判斷是否可以完成遊戲。如果可以,輸出最少點選螢幕數;否則,輸出小鳥最多可以通過多少個管道縫隙。

輸入第 1行有 3個整數 n, m, k,分別表示遊戲介面的長度,高度和水管的數量,每兩個整數之間用乙個空格隔開;

接下來的 n行,每行 2 個用乙個空格隔開的整數 x和 y,依次表示在橫座標位置 0∼n−1 上玩家點選螢幕後,小鳥在下一位置上公升的高度 x,以及在這個位置上玩家不點選螢幕時,小鳥在下一位置下降的高度 y。

接下來 k行,每行 3個整數 p, l, h,每兩個整數之間用乙個空格隔開。每行表示乙個管道,其中 p 表示管道的橫座標,l表示此管道縫隙的下邊沿高度,h表示管道縫隙上邊沿的高度(輸入資料保證 p各不相同,但不保證按照大小順序給出)。

輸出第一行,包含乙個整數,如果可以成功完成遊戲,則輸出 1,否則輸出 0。

第二行,包含乙個整數,如果第一行為 1,則輸出成功完成遊戲需要最少點選螢幕數,否則,輸出小鳥最多可以通過多少個管道縫隙。

樣例輸入

10 10 6 

3 9

9 9

1 2

1 3

1 2

1 1

2 1

2 1

1 6

2 2

1 2 7

5 1 5

6 3 5

7 5 8

8 7 9

9 1 3

樣例輸出

1

6

題解

#include#include

#include

#include

#include

#include

using

namespace

std;

#define ll long long

const

int maxn=10000+500

;const

int maxm=2000+50

;const

int maxx=2139062143

;struct birda[maxn];

struct guanzig[maxn];

intn,m,k,t,pre[maxn],w;

intdp[maxn][maxm];

bool

p[maxn];

int cmp(const guanzi &aa,const guanzi &bb)

template

void read(t&aa)

intmain()

}for(int i=1;i<=m;i++) if(dp[n][i]cout

if(w==1

)

else

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

if(!p)

}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,豎直移動的距離由...