1. 程式人生 > >BNUOJ 52511 Keep In Line

BNUOJ 52511 Keep In Line

class blog ring break 需要 main code bre 是否

隊列,$map$。

每次出隊進行出隊操作的是時候,先把隊列中需要出隊的人全部出隊,然後比較對頭和當前出隊的人是否相同。

#include<bits/stdc++.h>
using namespace std;
int T,n,sz,sum;
int f[100010];
char op[100];
int main()
{
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n); sum=sz=0;
        map<string,int>zhuan;
        queue
<int>Q; memset(f,0,sizeof f); for(int i=1;i<=n;i++) { scanf("%s",op); if(op[0]==i) { scanf("%s",op); zhuan[op]=++sz; Q.push(sz); } else {
while(1) { if(Q.empty()) break; if(f[Q.front()]==0) break; Q.pop(); } scanf("%s",op); int id = zhuan[op]; f[id]=1; if(Q.front()!=id) sum++; } } printf(
"%d\n",n/2-sum); } return 0; }

BNUOJ 52511 Keep In Line