《挑戰程式設計競賽》的第一道oj題目,記錄一下
題目大致描述是:有一群螞蟻在一根水平木棒上,給出初始時每只螞蟻在木棒上距離木棒左端的位置,螞蟻可向左向右移動,當螞蟻走到木棒的一端時會掉下木棒,求所有螞蟻全部掉下木棒的最短時間和最長時間。
考慮最短時間,所有螞蟻朝著距離自己較近的一端走,求出用時最多的螞蟻的用時,即為所有螞蟻全部掉下去的最短時間
考慮最長時間,按照題目描述,兩隻螞蟻碰頭之後會各自掉頭向相反的方向走,但可以認為兩隻螞蟻交錯前進,符書中**如下
因此,所有螞蟻朝著距離自己較遠的一端走,用時最多的螞蟻的用時,即為所有螞蟻全部掉下木棒的最大時間
雖然開始不太明白,但想通之後,最後的程式卻是出乎意料的簡答
#include#includeusing namespace std;
//每只螞蟻的位置
vectorpos;
int main()
//最短時間
int mint = 0;
for(int i = 0; i < n; ++i)
//最長時間
int maxt = 0;
for(int i = 0; i < n; ++i)
printf("%d %d\n", mint, maxt);
}system("pause");
return 0;
}
解題報告 POJ1852 Ants
解析 本題需要自己建立模型,思考演算法。本題要求最後乙隻螞蟻掉落的最小時間和最大時間,如果兩隻螞蟻相遇,他們會掉頭,但是我們可以將它們看作沒有相遇。因為a遇到b後掉頭,把a看作b,b看作a,就相當於b繼續走,a也繼續走,只是兩隻螞蟻交換了而已,而我們不區別螞蟻個體。錯誤報告 示例 include i...
POJ 1852 Ants(模擬 彈性碰撞)
題意 在一根長為l厘公尺的水平木棍上有n只螞蟻,它們以每秒1cm s的速度走到木棍一端就會掉下去。現在知道它們起始位置 相對於木棍左端點的距離 但是不知道它們爬行的方向。兩隻螞蟻相遇後,它們會掉頭往反方向走。求所有螞蟻都落下木棍的最短時間和最長時間。如果採用窮舉搜尋的辦法列舉所有螞蟻的初始朝向,那麼...
poj 1852 腦洞大開(Ants)
題意 有乙個一維的數軸,給定其長度len 數軸範圍為 0,len 和上面的螞蟻數n。接下來給出n只螞蟻的座標,都位於整數點之上。螞蟻的移動速度為1,兩隻螞蟻迎面相遇立即朝相反方向運動。假設螞蟻的初始方向未知,問所有螞蟻掉落數軸的最小和最大時間。思路 最小時間比較顯然,就是所有螞蟻不碰撞,即偏左的螞蟻...