第 \(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 ...