DreamJudge-1177-查詢學生資訊

DawnTraveler發表於2024-06-15

1.題目描述

Time Limit: 1000 ms
Memory Limit: 32768 mb

“臭味相投”——這是我們描述朋友時喜歡用的詞彙。兩個人是朋友通常意味著他們存在著許多共同的興趣。然而作為一個宅男,你發現自己與他人相互瞭解的機會並不太多。幸運的是,你意外得到了一份北大圖書館的圖書借閱記錄,於是你挑燈熬夜地程式設計,想從中發現潛在的朋友。 首先你對借閱記錄進行了一番整理,把N個讀者依次編號為1,2,…,N,把M本書依次編號為1,2,…,M。同時,按照“臭味相投”的原則,和你喜歡讀同一本書的人,就是你的潛在朋友。你現在的任務是從這份借閱記錄中計算出每個人有幾個潛在朋友。

輸入輸出格式

輸入描述:

多組測試資料。
每個案例第一行兩個整數N,M,2 <= N ,M<= 200。接下來有N行,第i(i = 1,2,…,N)行每一行有一個數,表示讀者i-1最喜歡的圖書的編號P(1<=P<=M)

輸出描述:

每個案例包括N行,每行一個數,第i行的數表示讀者i有幾個潛在朋友。如果i和任何人都沒有共同喜歡的書,則輸出“BeiJu”(即悲劇,^ ^)

輸入輸出樣例

輸入樣例#:

4 5
2
3
2
1

輸出樣例#:

1
BeiJu
1
BeiJu

題目來源
北京大學上機題

2.題解

2.1 map記錄

思路

這題沒什麼好說的,只要記住這裡找的是除了自己以外共同喜歡某本書的人數,必須減去自己的影響!!!

程式碼

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n, m;
	while(cin >> n >> m){
		vector<int> fav(n);
		unordered_map<int, int> mp;
		for(int i = 0; i < n; i++){
			cin >> fav[i];
			if(mp.count(fav[i])){
				mp[fav[i]]++;
			}else{
				mp.emplace(fav[i], 1);
			}
		}	
		for(int i = 0; i < n; i++){
			if(mp[fav[i]] > 1){
				cout << mp[fav[i]] - 1 << endl;
			}else{
				cout << "BeiJu" << endl;
			}
		}
	}
	return 0;
}

相關文章