A. Hotelier
题意:一家有10间房间的旅馆(10个房间排成一排),在旅馆的左右两端都有一个办理入住的前台,L代表在左端办理入住,R代表在右端办理入住,顾客都会挑选距离最近的空房间入住,数字 i 表示房间号为 i 的顾客退房,问最后房间的入住情况
题解:用set保存每个空房间的房间号(房间号从0开始),然后每次对set的两端进行操作
#include<iostream> #include<string.h> #include<string> #include<algorithm> #include<math.h> #include<string> #include<string.h> #include<vector> #include<utility> #include<map> #include<queue> #include<set> #define mx 0x3f3f3f3f #define ll long long using namespace std; int a[10]; string s; set<int>p; int main() { int n,l=0,r=9,pos=-1; cin>>n; for(int i=0;i<10;i++) p.insert(i); cin>>s; for(int i=0;s[i];i++) { if(s[i]=='L') { int temp=*(p.begin()); a[temp]=1; p.erase(p.begin()); } else if(s[i]=='R') { int temp=*(p.rbegin()); a[temp]=1; set<int>::iterator it=p.end(); p.erase(--it); } else { a[s[i]-'0']=0; p.insert(s[i]-'0'); } } for(int i=0;i<10;i++) cout<<a[i]; cout<<endl; return 0; }
等风起的那一天,我已准备好一切