20200929 day23 刷題記錄

2022-05-20 09:24:24 字數 2569 閱讀 6638

第 \(1\) 行有 \(3\) 個整數 \(n, m, k\),分別表示遊戲介面的長度,高度和水管的數量,每兩個整數之間用乙個空格隔開; 接下來的 \(n\) 行,每行 \(2\) 個用乙個空格隔開的整數 \(x\) 和 \(y\),依次表示在橫座標位置 \(0 \sim 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

1

6

10 10 4 

1 2

3 1

2 2

1 8

1 8

3 2

2 1

2 1

2 2

1 2

1 0 2

6 7 9

9 1 4

3 8 10

0

3

【輸入輸出樣例說明】

如下圖所示,藍色直線表示小鳥的飛行軌跡,紅色直線表示管道。

【資料範圍】

對於 \(30\%\) 的資料:\(5 \leq n \leq 10, 5 \leq m \leq 10, k=0\),保證存在一組最優解使得同一單位時間最多點選螢幕 \(3\) 次;

對於 \(50\%\) 的資料:\(5 \leq n \leq 20, 5 \leq m \leq 10\),保證存在一組最優解使得同一單位時間最多點選螢幕 \(3\) 次;

對於 \(70\%\) 的資料:\(5 \leq n \leq 1000, 5 \leq m \leq 100\);

對於 \(100\%\) 的資料:\(5 \leq n \leq 10000\),\(5 \leq m \leq 1000\),\(0 \leq k < n\),\(0 < x,y < m\),\(0 < p < n\),\(0 \leq l < h \leq m\), \(l + 1 < h\)。

向上飛是完全揹包(可以多次點)

向下跳是01揹包(只能向下跳1格)

碰到最上端不能再飛

最後統計最大值情況即可

(雖然說還是好難)

\(m,n\)不要讀反了!!!!!!!!

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

int n,m,k;//長n寬m

int x[10005],y[10005];

int low[10010],high[10010];

int f[10010][2010];

bool e[10010];//e[i]位置是否有管道

int ans;

int main()

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

int a,b,c;

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

//上公升 完全揹包 下降 01揹包

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

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

for(int i=1;i<=n;++i)edge[maxn<<1];

int head[maxn],ans[maxn],d[maxn];

#include priority_queue> q;

void add(int x,int y)

bool p[maxn];

int main()

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

d[1]=0;ans[1]=1;

q.push(make_pair(0,1));

while(q.size())

else if(d[y]==d[x]+1)

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

return 0;

}

演算法筆記 刷題2 3

b 例題4 2 比較交換實數值 c 例題4 3 比較交換3個實數值,並按序輸出 d 習題4 4 三個整數求最大值 e 習題4 10 1 獎金計算 編寫乙個c程式,要求在螢幕上輸出一下一行資訊。this is my first c program 求一元二次方程ax2 bx c 0的根,三個係數a,b...

Day1刷題總結

如果進棧序列為e1,e2,e3,e4,則不可能的出棧序列是 d a.e2,e4,e3,e1 b.e4,e3,e2,e1 c.e1,e2,e3,e4 d.e3,e1,e4,e2 解析 對於a,進棧的順序是先把e1,e2進棧,再把e2出棧,再將e3,e4進棧,這時棧按順序剩下e1,e3,e4,出棧的順序...

Day10刷題總結

1 public class abc 3 4 將以下哪個方法插入行 3 是不合法的。b a.public float max float a,float b,float c b.public double max double c,double d c.public float max float ...