一根長度為c厘公尺的木棍上有n只螞蟻,每只螞蟻要麼朝左爬,要麼朝右爬,速度為1厘公尺/秒。當兩隻螞蟻相撞時,二者同時掉頭(掉頭時間忽略不計)。給出每只螞蟻的初始位置和朝向,計算t秒之後每只螞蟻的位置。
輸入格式:
輸入的第一行為資料組數。每組資料的第一行為3個正整數c、t、n(0<=n<=10000);以下n行每行描述乙隻螞蟻的初始位置,其中,整數x為螞蟻距離木棍左端的距離(單位:厘公尺),字母表示初始朝向(l表示朝左,r表示朝右)。
輸出格式:
對於每組資料,輸出n行,按輸入順序輸出每只螞蟻的位置和朝向(turning表示正在碰撞)。在第t秒之前已經掉下木棍的螞蟻(正好爬到木棍邊緣的不算)輸出fell off。
```cpp
#includeusing namespace std;
int main()
;//模擬法,用結構體變數表示每乙個螞蟻的狀態
m1++;//用於計數 case#m1
int c,t,n,i,j;
cin>>c>>t>>n;
ant *ants;//動態陣列
ants=new ant[n+1];
for(i=1;i<=n;i++)
cin>>ants[i].pos>>ants[i].orient;
while(t--)
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
if(ants[i].orient!=ants[j].orient&&(ants[i].pos-1==ants[j].pos||ants[i].pos
+1==ants[j].pos))//判斷是否會出現兩隻螞蟻相向而行並且正好相差乙個整數單位距離,如果有的話它們也會相遇,應該互換位置
int *flag;
flag=new int[n+1];
for(j=1;j<=n;j++)
flag[j]=0;
for(i=1;i<=n;i++)
//turning
if(ants[i].pos>c||ants[i].pos<0)
ants[i].condition='2';//fell off的狀態
} }
cout<<"case #"
}return 0;
}
木棒上的螞蟻
一根長度為1公尺的木棒上有若干只螞蟻在爬動。它們的速度為每秒一厘公尺或靜止不動,方向只有兩種,向左或者向右。如果兩隻螞蟻碰頭,則它們立即交換速度並繼續爬動。三隻螞蟻碰頭,則兩邊的螞蟻交換速度,中間的螞蟻仍然靜止。如果它們爬到了木棒的邊緣 0或100厘公尺處 則會從木棒上墜落下去。在某一時刻螞蟻的位置...
CDOJ 木桿上的螞蟻
description 在一根細木桿上,有一些速度相同螞蟻,它們有的往左走,有的往右走,木桿很細,只允許乙隻螞蟻通過,所以當兩隻螞蟻碰頭的時候,它們會掉頭繼續前進,直到走出邊界,掉下木桿。已知木桿的長度和每只螞蟻的名字 位置和初始方向,問依次掉下木桿的螞蟻花費的時間以及它的名字。input 輸入包含...
Ubuntu上安裝 Emacs 24的幾種方法
1.首選當然是在ubuntu software center 中找或者 apt get install emacs,可惜的是只有emacs23版本的,所以此路不通,放棄,現在ubuntu12.04開始已經有了emacs24,不過還是不推薦 訪問 按頁面上的步驟做,很簡單,如下 如果你安裝了老版本的e...