PAT 乙級 1065_PAT

來源:互聯網
上載者:User
1065. 單身狗(25)

“單身狗”是中文對於單身人士的一種愛稱。本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。

輸入格式:

輸入第一行給出一個正整數N(<=50000),是已知夫妻/伴侶的對數;隨後N行,每行給出一對夫妻/伴侶——為方便起見,每人對應一個ID號,為5位元字(從00000到99999),ID間以空格分隔;之後給出一個正整數M(<=10000),為參加派對的總人數;隨後一行給出這M位客人的ID,以空格分隔。題目保證無人重婚或腳踩兩條船。

輸出格式:

首先第一行輸出落單客人的總人數;隨後第二行按ID遞增順序列出落單的客人。ID間用1個空格分隔,行的首尾不得有多餘空格。 輸入範例:

311111 2222233333 4444455555 66666755555 44444 10000 88888 22222 11111 23333
輸出範例:
510000 23333 44444 55555 88888

【解析】

這道題是乙級的最後一道題,本題目的意思就是輸出單個來的,成對的就不用輸出了,剛剛做這道題的時候本來想用數組,寫到一半發現寫不下去了,之後突然想到結構體好像也可以所以之前做的時候是用結構體做的做了結果時間逾時,改了很久也沒改好,之後看了大佬的一道題的做法,發現數組做的話比較簡單時間複雜度和空間複雜度都比我的小。首先先定義兩個數組a和b,b數組裡面儲存自己的老婆或者老公是誰,然後輸入來的人數,和來的人的編號,這裡需要用到兩個標記,a數組中儲存如果A來了就給他賦值1,輸入順序是從前往後,先暫時給A的對象賦-1,如果A的對象來了就給A賦0表示他已經不是單身狗了。A數組的值其實就是只有0,1,-1如果A數組元素的值為1就表示是單身狗了。

#include <iostream>#include <cmath>#include<cstdio>using namespace std;int main(){    int N;    cin>>N;    int i;    int a[100000]={0};    int b[100001]={100000};    int A,B;    for(i=0;i<N;i++){        scanf("%d %d",&A,&B);        b[A]=B;        b[B]=A;    }    int count=0;    int M;    cin>>M;    for(i=0;i<M;i++){        cin>>A;        if(a[A]==0){            count++;            a[A]=1;            a[b[A]]=-1;        }        else if(a[A]==-1){            a[b[A]]=0;            count--;        }    }    int flag=0,j=0;    cout<<count<<endl;    for(i=0;j<count;i++){        if(a[i]==1){            if(flag==0)            flag=1;            else            cout<<" ";        printf("%05d",i);        j++;    }    }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.