洛谷P1007----獨木橋題解
技術標籤:c++
題目背景
戰爭已經進入到緊要時間。你是運輸小隊長,正在率領運輸部隊向前線運送物資。運輸任務像做題一樣的無聊。你希望找些刺激,於是命令你的士兵們到前方的一座獨木橋上欣賞風景,而你留在橋下欣賞士兵們。士兵們十分憤怒,因為這座獨木橋十分狹窄,只能容納11個人通過。假如有22個人相向而行在橋上相遇,那麼他們22個人將無妨繞過對方,只能有11個人回頭下橋,讓另一個人先通過。但是,可以有多個人同時呆在同一個位置。
題目描述
突然,你收到從指揮部發來的資訊,敵軍的轟炸機正朝著你所在的獨木橋飛來!為了安全,你的部隊必須撤下獨木橋。獨木橋的長度為LL,士兵們只能呆在座標為整數的地方。所有士兵的速度都為11,但一個士兵某一時刻來到了座標為00或L+1L+1的位置,他就離開了獨木橋。
每個士兵都有一個初始面對的方向,他們會以勻速朝著這個方向行走,中途不會自己改變方向。但是,如果兩個士兵面對面相遇,他們無法彼此通過對方,於是就分別轉身,繼續行走。轉身不需要任何的時間。
由於先前的憤怒,你已不能控制你的士兵。甚至,你連每個士兵初始面對的方向都不知道。因此,你想要知道你的部隊最少需要多少時間就可能全部撤離獨木橋。另外,總部也在安排阻攔敵人的進攻,因此你還需要知道你的部隊最多需要多少時間才能全部撤離獨木橋。
輸入格式
第一行:一個整數LL,表示獨木橋的長度。橋上的座標為11…LL
第二行:一個整數NN,表示初始時留在橋上的士兵數目
第三行:有NN個整數,分別表示每個士兵的初始座標。
輸出格式
只有一行,輸出22個整數,分別表示部隊撤離獨木橋的最小時間和最大時間。22個整數由一個空格符分開。
輸入輸出樣例
輸入:
4
2
1 3
輸出:
2 4
解析:
找出每個人到橋頭和橋尾的距離x和y,再比較一下,如果x<y就交換x和y,再引入兩個記錄所有人出橋所需的最長時間和最小時間最後輸出即可
程式碼較短喜歡請點贊
程式碼:
#include <bits/stdc++.h>
using namespace std;
int main(){
int l,n,pl,x,y,f1,maxa=0,mina=0,m;
cin>>l>>n;
for( int i=1;i<=n;i++){
cin>>pl;
x=pl-0;
y=l+1-pl;
if(x>y){
m=y;y=x;x=m;
}
if(x>mina){
mina=x;
}
if(y>maxa){
maxa=y;
}
}
cout<<mina<<" "<<maxa;
}
來個一鍵三連!!!