cogs 1456. [UVa 10881,Piotr's Ants]蚂蚁
1456. [UVa 10881,Piotr's Ants]螞蟻
★?? 輸入文件:Ants.in?? 輸出文件:Ants.out???簡單對比
時間限制:1 s?? 內(nèi)存限制:128 MB
【題目描述】
?
【輸入格式】
?
【輸出格式】
對于每組數(shù)據(jù),輸出n(Case #n:),按輸入順序輸出每只螞蟻的位置和朝向(Turning表示正在碰撞)。在T秒之前已經(jīng)掉落的螞蟻(正好爬到邊緣不算)輸出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 Turning 6 R 2 Turning Fell off Case #2: 3 L 6 R 10 R
【來源】
UVa 10881,Piotr's Ants
思路:
假設(shè)你在遠(yuǎn)處觀察這些螞蟻的運動,會看到什么?一群密密麻麻的小黑點在移動。由于黑點太小,所以當(dāng)螞蟻一碰撞而掉頭時,看上去和兩個點”對穿而過“沒有什么區(qū)別。換句話說,如果把螞蟻看做是沒有區(qū)別的小點,那么只需要計算出每只螞蟻在T時刻的位置即可。比如,有3只螞蟻,螞蟻1=(1,R),螞蟻2=(3,L),螞蟻3=(4,L),則兩秒之后,三只螞蟻分別為(3,R),(1,L)和(2,L)。
注意,雖然從整體上講,”掉頭“等價于”對穿而過“,但對于每只螞蟻而言,并不是這樣。螞蟻1的初始狀態(tài)為(1,R),因此一定有一只螞蟻在兩秒鐘之后處于(3,R)的狀態(tài),但這只螞蟻卻不一定是螞蟻1.換句話說,我們需要搞清楚目標(biāo)狀態(tài)中的”誰是誰“。
可以想象一下,所有螞蟻的相對順序是保持不變的。然后這個問題就很好解決了。
這是代碼:
#include<map> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define MAXN 10001 using namespace std; map<int,int>vis; int T; int len,t,n,num; struct nond{int pos,turn,id; }v[MAXN],vv[MAXN]; int cmp(nond a,nond b){return a.pos<b.pos; } int cmp1(nond a,nond b){return a.id<b.id; } int main(){freopen("Ants.in","r",stdin);freopen("Ants.out","w",stdout);scanf("%d",&T);for(int k=1;k<=T;k++){vis.clear();memset(v,0,sizeof(v));memset(vv,0,sizeof(vv));printf("Case #%d:",k);scanf("%d%d%d",&len,&t,&n);for(int i=1;i<=n;i++){char c;scanf("%d %c",&v[i].pos,&c);if(c=='R') v[i].turn=1;else v[i].turn=-1;v[i].id=i;vv[i]=v[i];}sort(v+1,v+1+n,cmp);sort(vv+1,vv+1+n,cmp);for(int i=1;i<=n;i++){if(vv[i].turn==-1) vv[i].pos-=t;else if(vv[i].turn==1) vv[i].pos+=t;if(vv[i].pos>len||vv[i].pos<0) vv[i].turn=0;else vis[vv[i].pos]++; }sort(vv+1,vv+1+n,cmp);for(int i=1;i<=n;i++){v[i].pos=vv[i].pos;v[i].turn=vv[i].turn;}sort(v+1,v+1+n,cmp1);for(int i=1;i<=n;i++){if(v[i].turn==0) cout<<"Fell off"<<endl;else if(vis[v[i].pos]!=1) cout<<v[i].pos<<" "<<"Turning"<<endl;else if(v[i].turn==1) cout<<v[i].pos<<" "<<"R"<<endl;else cout<<v[i].pos<<" "<<"L"<<endl;}} }?
轉(zhuǎn)載于:https://www.cnblogs.com/cangT-Tlan/p/7725913.html
總結(jié)
以上是生活随笔為你收集整理的cogs 1456. [UVa 10881,Piotr's Ants]蚂蚁的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 像素初探
- 下一篇: JS基础_使用工厂方法创建对象(了解下就