1 条题解
-
0
C :
#include"stdio.h" #include"string.h" struct erbi { float l; char w; }s[10001]; int main() { int m,g=1; scanf("%d",&m); while(m--) { int len,t,n; scanf("%d%d%d",&len,&t,&n); int i,j,k; for(i=0;i<n;i++) scanf("%f %c",&s[i].l,&s[i].w); for(j=1;j<=t*2;j++) { for(i=0;i<n;i++) { if(s[i].w=='R') s[i].l+=0.5; else s[i].l-=0.5; } for(i=0;i<n;i++) { for(k=0;k<n;k++) { if(i==k) continue; if(s[i].l==s[k].l) { if(s[i].w=='R') s[i].w='L'; else s[i].w='R'; } } } } printf("Case #%d:\n",g++); for(i=0;i<n;i++) { int flage=1; if(s[i].l<0||s[i].l>10) printf("Fell off\n"); else { for(j=0;j<n;j++) { if(i==j) continue; if(s[i].l==s[j].l) { printf("%.0f Turning\n",s[i].l); flage=0; break; } } if(flage) printf("%.0f %c\n",s[i].l,s[i].w); } } } return 0; }
C++ :
#include<cstdio> #include<algorithm> using namespace std; const int maxn = 10000+5; const char dirName[][10]={"L","Turning","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 tcase,L,T,n; scanf("%d",&tcase); int caseID=tcase; while(tcase--) { 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]=(Ant){i,p,d}; after[i]=(Ant){0,p+T*d,d}; } sort(before,before+n); for(int i=0;i<n;i++) order[before[i].id]=i; sort(after,after+n); for(int 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",caseID-tcase); for(int 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]); } } return 0; }
- 1
信息
- ID
- 774
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者