链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=294
一步一步模拟出来的....
把情况考虑全面: “Both robots know the full sequence in advance”
#include <iostream> #include<cmath> #include<cstdio> using namespace std; class bot { public: char col; int pos; }; bot data[105]; int main() { // freopen("1.txt","r",stdin); int t; int ans; int n; int a,b; int i,j,k; cin>>t; int to,tb; bool s; for(k=1;k<=t;k++) { s=false; ans=0; to=1;tb=1; cin>>n; for(i=0;i<n;i++) cin>>data[i].col>>data[i].pos; i=0; while(i<n) { if(to==data[i].pos&&data[i].col=='O' ) { i++; for(j=i; j<n; j++) if(data[j].col=='B') { s=true; break; } if(s) { if(tb<data[j].pos) tb++; else if(tb>data[j].pos) tb--; s=false; } ans++; } else if(tb==data[i].pos&&data[i].col=='B' ) { i++; for(j=i; j<n; j++) if(data[j].col=='O') { s=true; break; } if(s) { if(to<data[j].pos) to++; if(to>data[j].pos) to--; s=false; } ans++; } else { for(j=i; j<n; j++) if(data[j].col=='O') { s=true; break; } if(s) { if(to<data[j].pos) to++; else if(to>data[j].pos) to--; s=false; } for(j=i; j<n; j++) if(data[j].col=='B') { s=true; break; } if(s) { if(tb<data[j].pos) tb++; else if(tb>data[j].pos) tb--; s=false; } ans++; } } cout<<"Case #"<<k<<": "<<ans<<endl; } return 0; }
天下武功,唯快不破