木棍上的螞蟻jolj2466 模擬法

2021-10-12 04:21:08 字數 1196 閱讀 2798

一根長度為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...