CDOJ 木桿上的螞蟻

2021-07-04 15:42:47 字數 1417 閱讀 7441

description

在一根細木桿上,有一些速度相同螞蟻,它們有的往左走,有的往右走,木桿很細,只允許乙隻螞蟻通過,所以當兩隻螞蟻碰頭的時候,它們會掉頭繼續前進,直到走出邊界,掉下木桿。

已知木桿的長度和每只螞蟻的名字、位置和初始方向,問依次掉下木桿的螞蟻花費的時間以及它的名字。

input

輸入包含多組測試資料。

第一行包含乙個整數t(t <= 20),代表測試資料組數。

每組測試資料的第一行包含兩個整數n l,表示有n只螞蟻(n <= 100),木桿長度為l(l <= 1000)。假設螞蟻每秒前進乙個單位距離,掉頭轉向的時間忽略不計。

以下n行,每行依次為螞蟻的名字(長度不超過10,僅由英文本母組成),初始位置p(0 < p < l,整數,表示螞蟻離木桿最左端的距離),初始方向(乙個字元,l表示向左,r表示向右),以單個空格分隔,資料保證初始不會有兩隻螞蟻在同乙個位置。

output

對於第k組測試資料,首先輸出一行為「case #k:」。

然後輸出n行,給出依次掉下木桿的螞蟻花費的時間以及它的名字,以單個空格分隔。

(按照掉下木桿的先後順序輸出,資料保證不會有兩支螞蟻同時掉下木桿)。

sample input

2 2 5

gg 1 l

2 5

gg 1 r

mm 2 l

sample output

case #1:

1 gg

2 mm

2 gg

4 mm

分析:按照螞蟻的初始位置,以及它的方向排序,可以認為螞蟻相遇時就代替對方繼續走下去。

#include 

#include //因為要用sort演算法

#define n 100

using

namespace

std; //必須引用名字空間std

struct ant_type

ants[n];

struct event_type

events[n];

bool cmp_ant(const ant_type& p, const ant_type& q)

bool cmp_event(const event_type& p, const event_type& q)

int main()

sort(ants, ants + n, cmp_ant);

sort(events, events + n, cmp_event);

printf("case #%d:\n", k);

l = 0; r = n - 1;

for (i = 0; i < n; i++)

else

}}return

0;}

木棒上的螞蟻

一根長度為1公尺的木棒上有若干只螞蟻在爬動。它們的速度為每秒一厘公尺或靜止不動,方向只有兩種,向左或者向右。如果兩隻螞蟻碰頭,則它們立即交換速度並繼續爬動。三隻螞蟻碰頭,則兩邊的螞蟻交換速度,中間的螞蟻仍然靜止。如果它們爬到了木棒的邊緣 0或100厘公尺處 則會從木棒上墜落下去。在某一時刻螞蟻的位置...

木棍上的螞蟻jolj2466 模擬法

一根長度為c厘公尺的木棍上有n只螞蟻,每只螞蟻要麼朝左爬,要麼朝右爬,速度為1厘公尺 秒。當兩隻螞蟻相撞時,二者同時掉頭 掉頭時間忽略不計 給出每只螞蟻的初始位置和朝向,計算t秒之後每只螞蟻的位置。輸入格式 輸入的第一行為資料組數。每組資料的第一行為3個正整數c t n 0 n 10000 以下n行...

螞蟻的故事

老婆生活記錄 螞蟻是地球上最常見的昆蟲,數量最多的昆蟲種類。螞蟻好小,只有幾公釐,乙隻螞蟻的重量只有 0.005 克,很多動畫片裡都有它的身影,百威啤酒的廣告也讓小小螞蟻變成了最可愛的小東西,對這樣的乙個小可愛,你會怕它嗎?今天,閒暇之餘對幾個朋友做了乙個小小的調查,問他們是否怕螞蟻?片刻,朋友們的...