1065 單身狗 (25 分)

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

輸入格式:

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

輸出格式:

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

輸入樣例:

3
11111 22222
33333 44444
55555 66666
7
55555 44444 10000 88888 22222 11111 23333

輸出樣例:

5
10000 23333 44444 55555 88888
//思路是一個數組互相存儲代表夫妻的id
//一個bool數組來表示是否是單身狗
//如果spouse[id] == 0 代表一定是單身狗
//否則,bool[id] 先改成true
//如果bool[spouse[id]]為true,說明對象已經有了,就把cnt--,并且把它改為false
//第三個測試點過不去,可能會某個值出現了兩次,問題真是存疑
#include<cstdio>const int maxn = 100000;
int spouse[maxn] = {0};
bool isDog[maxn] = {false};
int arr[maxn];int main(){int n,m;scanf("%d",&n);int g,b;for(int i = 0; i <  n; i++){scanf("%d %d",&g,&b);spouse[g] = b;spouse[b] = g;}scanf("%d",&m);int cnt = 0;for(int i = 0; i < m; i++){scanf("%d",&b);if(!spouse[b]){ // 沒有對象isDog[b] = true;cnt++;}else{ // 有對象 if(isDog[spouse[b]]){ //對象在 isDog[spouse[b]] = false;//isDog[b] = false;cnt--;}else{ //對象不在 isDog[b] = true;cnt++;}}} //printf("%d",isDog[22156]);printf("%d\n",cnt);for(int i = 0; i < maxn; i++){if(isDog[i]) {printf("%05d%c",i,--cnt ? ' ' : '\0');//if(--cnt) printf(" ");    
        } }
//    printf("%d",cnt);return 0;
} 
//第二個測試點過不去 
#include<cstdio>
const int maxn = 100000;
int spouse[maxn] = {0};
int main(){int n;int u,v;scanf("%d",&n);for(int i = 0; i < n; i++){scanf("%d%d",&u,&v);spouse[u] = v;spouse[v] = u;}scanf("%d",&n);int cnt = 0;for(int i = 0; i < n; i++){scanf("%d",&u);if(!spouse[u]) spouse[u] = -1,cnt++;else spouse[u] = -2;}for(int i = 0; i < maxn; i++){if(spouse[i] > 0 && spouse[spouse[i]] == -2){spouse[spouse[i]] = -1;cnt++;}}printf("%d\n",cnt);for(int i = 0; i < maxn; i++){if(spouse[i] == -1) printf("%05d%c", i, --cnt ? ' ' : '\0');}return 0;
}
//網友的答案
#include<cstdio>
const int maxn = 100000;
int spouse[maxn] = {0};
#define BLANK  -1
#define SINGED  -2
#define SINGLE -3
int main(){int n;int u,v;for(int i = 0 ; i < maxn; i++) spouse[i] = BLANK;scanf("%d",&n);for(int i = 0; i < n; i++){scanf("%d%d",&u,&v);spouse[u] = v;spouse[v] = u;}scanf("%d",&n);int cnt = 0;for(int i = 0; i < n; i++){scanf("%d",&u);if(spouse[u] >= 0) spouse[u] = SINGED;else spouse[u] = SINGLE,cnt++;}for(int i = 0; i < maxn; i++){if(spouse[i] >= 0 && spouse[spouse[i]] == SINGED){spouse[spouse[i]] = SINGLE;cnt++;}}printf("%d\n",cnt);for(int i = 0; i < maxn; i++){if(spouse[i] == SINGLE) printf("%05d%c", i, --cnt ? ' ' : '\0');}return 0;
}

?

轉載于:https://www.cnblogs.com/wanghao-boke/p/10407714.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385195.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385195.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385195.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

存儲

一、多重繼承&#xff08;無虛函數覆蓋&#xff09; 下面&#xff0c;再讓我們來看看多重繼承中的情況&#xff0c;假設有下面這樣一個類的繼承關系。注意&#xff1a;子類并沒有覆蓋父類的函數。 class Base1 { public: virtual void f() { cout << "Base1::f&quo…

【對象程序設計面向】虛繼承

B C虛繼承A&#xff0c;D public繼承 B C &#xff0c;有A *a new D&#xff0c;a->fun(),fun是虛函數&#xff0c;并且B C都重寫了&#xff0c;怎么保證a調用的是B重寫的虛函數。 #include <iostream> using namespace std;class A { public:virtual void fun() { …

BTree和B+Tree詳解

B 樹是為了磁盤或其它存儲設備而設計的一種多叉&#xff08;下面你會看到&#xff0c;相對于二叉&#xff0c;B樹每個內結點有多個分支&#xff0c;即多叉&#xff09;平衡查找樹。 B 樹又叫平衡多路查找樹。一棵m階的B 樹 (m叉樹)的特性如下&#xff1a; 樹中每個結點最多含…

【1】MySQL的四種事務隔離級別

二、事務的并發問題 1、臟讀&#xff1a;事務A讀取了事務B更新的數據&#xff0c;然后B回滾操作&#xff0c;那么A讀取到的數據是臟數據 2、不可重復讀&#xff1a;事務 A 多次讀取同一數據&#xff0c;事務 B 在事務A多次讀取的過程中&#xff0c;對數據作了更新并提交&#x…

MySQL的四種事務隔離級別

1. MySQL的四種事務隔離級別

__thread

__thread是GCC內置的線程局部存儲設施&#xff0c;存取效率可以和全局變量相比。__thread變量每一個線程有一份獨立實體&#xff0c;各個線程的值互不干擾。可以用來修飾那些帶有全局性且值可能變&#xff0c;但是又不值得用全局變量保護的變量。 __thread使用規則&#xff1a…

eventfd(三)

1. 測試代碼&#xff1a; //https://www.jianshu.com/p/d7ebac8dc9f8 #include <stdio.h> #include <unistd.h> #include <stdint.h> #include <pthread.h> #include <sys/eventfd.h> #include <sys/epoll.h>int event_fd -1;void *rea…

04-樹4 是否同一棵二叉搜索樹 (25 分)

給定一個插入序列就可以唯一確定一棵二叉搜索樹。然而&#xff0c;一棵給定的二叉搜索樹卻可以由多種不同的插入序列得到。例如分別按照序列{2, 1, 3}和{2, 3, 1}插入初始為空的二叉搜索樹&#xff0c;都得到一樣的結果。于是對于輸入的各種插入序列&#xff0c;你需要判斷它們…

strtol,strtoll,strtoul, strtoull函數的使用

#include<stdlib.h> // 這個是C標準庫&#xff0c;與linux無關。這套函數是通用 long int strtol(const char *nptr, char **endptr, int base); long long int strtoll(const char *nptr, char **endptr, int base); unsigned long int strtoul(const char *nptr, char …

eventfd(一)

函數原型&#xff1a; 創建的時候可以傳入一個計數器的初始值initval。 第二個參數flags在linux 2.6.26之前的版本是沒有使用的&#xff0c;必須初始化為0&#xff0c;在2.6.27之后的版本flag才被使用。 #include <sys/eventfd.h> int eventfd(unsigned int initval, in…

gettimeofday

作用&#xff1a;需要打印代碼執行到某處的時間&#xff0c;或者需要計算程序執行的時間差&#xff08;精確到微妙級&#xff09;。這時會用到gettimeofday函數&#xff0c;它可以返回自1970-01-01 00:00:00到現在經歷的秒數。 #include <sys/time.h> int gettimeofday(…

02-線性結構2 一元多項式的乘法與加法運算 (20 分

設計函數分別求兩個一元多項式的乘積與和。 輸入格式: 輸入分2行&#xff0c;每行分別先給出多項式非零項的個數&#xff0c;再以指數遞降方式輸入一個多項式非零項系數和指數&#xff08;絕對值均為不超過1000的整數&#xff09;。數字間以空格分隔。 輸出格式: 輸出分2行&…

1066 圖像過濾 (15 分)

圖像過濾是把圖像中不重要的像素都染成背景色&#xff0c;使得重要部分被凸顯出來。現給定一幅黑白圖像&#xff0c;要求你將灰度值位于某指定區間內的所有像素顏色都用一種指定的顏色替換。 輸入格式&#xff1a; 輸入在第一行給出一幅圖像的分辨率&#xff0c;即兩個正整數 M…

從零實現一個http服務器

如果GET請求帶參數&#xff0c;那么一般是附加在請求的url后面&#xff0c;參數與參數之間使用&分割&#xff0c;例如請求http://www.hootina.org/index_2013.php?param1value1m2value2m3value3&#xff0c;我們看下這個請求組裝的的http協議包格式&#xff1a; GET /ind…

1068 萬綠叢中一點紅 (20 分)

對于計算機而言&#xff0c;顏色不過是像素點對應的一個 24 位的數值。現給定一幅分辨率為 MN 的畫&#xff0c;要求你找出萬綠叢中的一點紅&#xff0c;即有獨一無二顏色的那個像素點&#xff0c;并且該點的顏色與其周圍 8 個相鄰像素的顏色差充分大。 輸入格式&#xff1a; 輸…

《個人項目學習指引》

1. 從零實現一個http服務器

1069 微博轉發抽獎 (20 分)

小明 PAT 考了滿分&#xff0c;高興之余決定發起微博轉發抽獎活動&#xff0c;從轉發的網友中按順序每隔 N 個人就發出一個紅包。請你編寫程序幫助他確定中獎名單。 輸入格式&#xff1a; 輸入第一行給出三個正整數 M&#xff08;≤ 1000&#xff09;、N 和 S&#xff0c;分別是…

【1】TCP三次握手的第三次的 ack包丟失會怎樣?

面試題&#xff1a; 在 TCP 建立連接的三次握手連接階段&#xff0c;如果客戶端發送的第三個ACK包丟了&#xff0c;那么客戶端和服務端分別進行什么處理呢&#xff1f; 相信了解 tcp 協議的人&#xff0c;三次握手的過程肯定很了解了。第三次的 ack 包丟失就是說在 client 端…

1070 結繩 (25 分

給定一段一段的繩子&#xff0c;你需要把它們串成一條繩。每次串連的時候&#xff0c;是把兩段繩子對折&#xff0c;再如下圖所示套接在一起。這樣得到的繩子又被當成是另一段繩子&#xff0c;可以再次對折去跟另一段繩子串連。每次串連后&#xff0c;原來兩段繩子的長度就會減…

動態規劃目錄

序號題目1 70. 爬樓梯