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;
}