- 基本操作
入队:
queue.push() queue.push_back()//两者效果相同
出队:
queue.pop(); queue.pop_back();//都从尾部操作
考虑两个因素:1.每个参议员的决定都由之后的参议员决定 2.决定禁用之后都不能在投票
queue<int>radiant,dire;//使用两个队列去记录参会的议员再队列中的投票顺序 for(int i=0;i<n;++i){ if(senate[i]=='R') radiant.push(i); if(senate[i]=='D')dire.push(i); } while(!radiant.empty()&&!dire.empty()){ if(radiant.front()>dire.front()){ dire.push(dire.front()+n);//加n是因为要重新排队,在前面说明不会被淘汰 } else{ radiant.push(radiant.front()+n); } radiant.pop(); dire.pop();//1.因为被禁言所以要淘汰2.没有被禁言的因为重新在之后排队所以也要删除现在的位置 } return !radiant.empty()?"Radiant":"Dire";