C/C++每日小練(八)——螞蟻

來源:互聯網
上載者:User

螞蟻


一根長度為L厘米的木棍上有n只螞蟻,每隻螞蟻要麼朝左爬,要麼朝右爬,速度為1厘米/秒。當兩隻螞蟻相撞時,二者同時迴轉(迴轉時間忽略不計)。給出每隻螞蟻的初始位置和朝向,計算T秒之後每隻螞蟻的位置。


輸入格式:

輸入的第一行為資料群組數。每組資料的第一行為3個正整數L、T、n(0<=n<=10000);以下n行每行描述一隻螞蟻的初始位置,其中,整數x為螞蟻距離木棍左端的距離(單位:厘米),字母表示初始朝向(L表示朝左,R表示朝右)。

輸出格式:

對於每組資料,輸出n行,按輸入順序輸出每隻螞蟻的位置和朝向(Turing表示正在碰撞)。在第T秒之前已經掉下木棍的螞蟻(正好爬到木棍邊緣的不算)輸出Fell off。


範例輸入:

2

10 1 4

1 R

5 R

3 L

10 R

10 2 3

4 R

5 L

8 R

範例輸出:

Case #1:

2 Turing

6 R

2 Turing

Fell off


Case #2:

3 L

6 R

10 R


解:

#include<cstdio>#include<algorithm>using namespace std;const int maxn = 10000+5;const char dirName[][10] = {"L", "Turing", "R"};int order[maxn];//輸入的第i只螞蟻是終態中的左數第order[i]只螞蟻struct Ant{int id;//輸入順序int p;//位置int d;//朝向。-1:左;0:轉身中;1:右bool operator < (const Ant &a) const{return p < a.p;}}before[maxn], after[maxn];int main(){int K;scanf("%d", &K);for(int ki = 1; ki <= K; ki++){int L, T, n;scanf("%d%d%d", &L, &T, &n);for(int i = 0; i < n; i++){int p, d;char c;scanf("%d %c", &p, &c);d = (c=='L') ? -1 : 1;before[i].id = i; before[i].p = p; before[i].d = d;after[i].id = 0; after[i].p = p+T*d; after[i].d = d;//此處id還是未知的,用0代替}//計算次序數組sort(before, before+n);for(i = 0; i < n; i++)order[before[i].id] = i;//計算終態,保持原態或其它態sort(after, after+n);for(i = 0; i < n-1; i++)if(after[i].p == after[i+1].p) after[i].d = after[i+1].d = 0;//輸出結果printf("Case #%d:\n", ki);for(i = 0; i < n; i++){int a = order[i];//恢複輸入次序if(after[a].p < 0 || after[a].p > L) printf("Fell off\n");else printf("%d %s\n", after[a].p, dirName[after[a].d+1]);}printf("\n");}return 0;}


運行結果:



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.