uva 10881 Piotr's Ants 模拟
2014-01-07 18:38
232 查看
碰撞后相当于穿过去,所以结束的位置是可以确定的,又因为相对位置不变,所以可以通过排序确定某个位置是第几只蚂蚁。
#include<iostream> #include<cmath> #include<cstdio> #include<sstream> #include<cstdlib> #include<string> #include<string.h> #include<cstring> #include<algorithm> #include<vector> #include<map> #include<set> #include<stack> #include<list> #include<queue> #include<ctime> #include<bitset> #define eps 1e-6 #define INF 0x3f3f3f3f #define PI acos(-1.0) //#define ll __int64 #define ll long long #define lson l,m,(rt<<1) #define rson m+1,r,(rt<<1)|1 #define M 1000000007 #pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; int l,t,n; struct node { int id; int st; string dir; }ant[100005],now[100005]; int p[100005]; bool cmp1(node x,node y) { return x.st<y.st; } int main() { int cas,ca=1,n; scanf("%d",&cas); while(cas--) { scanf("%d%d%d",&l,&t,&n); for(int i=0;i<n;i++) { cin>>ant[i].st>>ant[i].dir; ant[i].id=i; now[i].st=ant[i].st+(ant[i].dir=="L"?-1*t:t); now[i].dir=ant[i].dir; } sort(ant,ant+n,cmp1); for(int i=0;i<n;i++) { p[ant[i].id]=i; } sort(now,now+n,cmp1); for(int i=0;i<n-1;i++) { if(now[i].st==now[i+1].st) now[i].dir=now[i+1].dir="Turning"; } printf("Case #%d:\n",ca++); for(int i=0;i<n;i++) { int id=p[i]; if(now[id].st<0||now[id].st>l) puts("Fell off"); else cout<<now[id].st<<" "<<now[id].dir<<endl; } puts(""); } return 0; }
相关文章推荐
- uva_10881_Piotr's Ants (模拟,Sort)
- Uva 10881 Piotr's Ants (模拟+思维)
- uva 10881 Piotr's Ants (模拟)
- uva 10881 - Piotr's Ants (思维,3级)
- UVA - 10881 Piotr's Ants
- uva - 10881 - Piotr's Ants(等效变换,排序)
- UVA - 10881 Piotr's Ants 推理
- 蚂蚁-UVA 10881 - Piotr's Ants
- UVa 10881 - Piotr's Ants
- uva 10881 - Piotr's Ants
- UVA_10881 - Piotr's Ants
- UVA - 10881 - Piotr's Ants
- uva10881 - Piotr's Ants (等效变换)
- Uva-10881-Piotr's Ants
- UVa 10881 - Piotr's Ants
- Piotr's ants UVA 10881
- UVA - 10881 Piotr's Ants
- UVa 10881 Piotr's Ants 蚂蚁
- UVA 10881 Piotr's Ants
- UVa 10881 Piotr's Ants