有没有大牛教教是哪里超时了
查看原帖
有没有大牛教教是哪里超时了
866521
jijijibeibeibei楼主2023/5/17 17:42
#include<iostream>//T306865 一曲新词酒一杯 超时
#include<cstring>
using namespace std;
int o[200005],x[200005];//o为操作类型,x为被操作的酒号 
bool a[200005];//a为表示酒是否被贴,1为已经被贴了,0表示还没别贴 
int main(){
    int t,n,m,mun,pan2=1;//mun表示还未被贴的酒的数量,pan2用来判断是否找到 
    cin>>t;
    for(int tv=1;tv<=t;tv++){//第tv组数据的操作 
        cin>>n>>m;mun=n;
        for(int i=1;i<=m;i++){
            cin>>o[i]>>x[i];
        }
        for(int i=1;i<=m;i++){//i为操作次数 
            if(o[i]==1&&a[x[i]]==0){//情况为1 
                a[x[i]]=1;mun--;
            }//贴这个 
            else if(o[i]==2){//情况为二 
                if(a[x[i]]==1){//已经贴过了 ,那就没有要贴的了。输出操作次数并跳出 
                    cout<<i<<endl;pan2=0;break;
                }
                else {
                    memset(a,false,sizeof(a));
                    a[x[i]]=0;
                    mun=1;
                }
            }//贴除这个以外的 
            if(mun==0){//贴完了 
                cout<<i<<endl;pan2=0;break;
            }
        }
        if(pan2==1){//如果是跳出来的,那就重置pan2 
            cout<<-1<<endl;
        }
        else {pan2=1;
        }
        memset(a,0,sizeof(a));//全部清0 
        memset(o,0,sizeof(o));
        memset(x,0,sizeof(x));
    }
    return 0;
}

2023/5/17 17:42
加载中...