火災逃生 一維版 18 11 26

2021-09-01 23:45:42 字數 1001 閱讀 7698

某天晚上,軟院某條狹窄的走廊突然發生了火災,該走廊只有首尾兩個出口,且因為過於狹窄,兩個人不能併排。假設t=0的時候發生了火災,此時有n個人在長度為l的走廊裡,走廊的最左端的座標是(0,0),最右端的座標是(l,0), 第i個人的位置是(d​i,0)。面朝左邊或者右邊,用0和1分別表示面朝左邊和右邊。假設從火災發生的時刻開始,每個人都朝著t=0時面朝的方向以1的速度前進。當兩個人相遇的時候兩個人會立馬掉頭回跑。為了所有人的安全,請計算出所有人離開走廊時的時刻。初始狀態下不會有兩個人在同乙個位置。

第一行有乙個整數t(t

<10)

t(t<10)

t(t<10

)表示有t個案例,每個案例的第一行有兩個整數n(0請輸出所有人都離開走廊的時刻。

12 10

5 18 0

注,掉頭的時間忽略不計。

這一題一開始其實是看錯題了。以為兩個人如果碰到了會穿過去。以為只要計算知道了位置與跑的方向就知道了最大時間。後來發現走廊只有一人寬,碰到後需要掉頭,然後就不知道怎麼想了,就卡在這了。後來抱著試一試的思想寫了一下一開始那種思路的**,ac了…什麼鬼題??!

貼一下**:

#includeint main()

printf("%d\n",s);

}return 0;

}

後來自己想了一下,不知道是不是應該這麼想,因為是確定**對的情況下才想出來的思路。

寫一下我的理解:即使兩個人是面對著跑的,碰上以後會掉頭,在這裡我們可以理解為其實就是碰到後直接就穿過去了,也可以理解為碰到後兩人交換了位置,

例如給出的測試樣例,

a 位置:5,向右

b 位置:8,向左

兩個人跑起來以後會在6.5那個位置發生碰頭,然後掉頭繼續跑。

我們就可以理解成其實在6.5那個位置,a與b發生了互換,b到了a的左邊,跑完剩下的6.5,a到了b的右邊,跑完剩下的3.5。無論走廊裡有多少人,又會發生多少碰撞,其實每次碰撞都可以這麼理解,那麼其實最長的時間就是每乙個人需要跑的距離的最大值。

火災逃生(一維版)

某天晚上,軟院某條狹窄的走廊突然發生了火災,該走廊只有首尾兩個出口,且因為過於狹窄,兩個人不能併排。假設t 0的時候發生了火災,此時有n個人在長度為l的走廊裡,走廊的最左端的座標是 0,0 最右端的座標是 l,0 第i個人的位置是 di 0 面朝左邊或者右邊,用0和1分別表示面朝左邊和右邊。假設從火...

table1函式 一維查表

功能介紹 一維查表 格式 格式 y table1 tab,x0 返回用 矩陣tab中的行線性插值元素,對x0 tab的第一列查詢x0 進行線性插值得到的結果y。矩陣tab是第一列包含關鍵值,而其他列包含資料的矩陣。x0中的每一元素將相應地返回一線性插值行向量。矩陣tab的第一列必須是單調的。例項介紹...

一維陣列中元素反向 1

print 生成0 19之間的陣列 a 一維陣列反向 a1 a 1 print 將a陣列反向 a1 生成0 19之間的陣列 0 1 2 3 4 5 6 7 將a陣列反向 7 6 5 4 3 2 1 0 高維陣列則沒有反向效果 將陣列轉換為 2,4 將陣列轉換為 4,2 a 2 4 a1.reshap...