每个案例第一行两个整数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
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
while(cin>>n>>m)
{
map<int,int>likeCount;//建立喜欢某本书的人数
int reader[n];//记录读者最喜欢哪本书
for(int i=0;i<n;i++)
{
int num;
cin>>num;
likeCount[num]++;
reader[i]=num;
}
for(int i=0;i<n;i++)
{
if(likeCount[reader[i]]>1)//大于一说明至少有两个人喜欢这本书
cout<<likeCount[reader[i]]-1<<endl;
else
cout<<"BeiJu"<<endl;
}
}
return 0;
} #include<bits/stdc++.h>
using namespace std;
map<int ,int>num;
const int maxx=205;
int book[maxx];//存放读者i喜欢的书的编号
int main()
{
int n,m;
while(cin>>n>>m)
{
for(int i=0;i<n;i++)
{
int x;
cin>>book[i];
x=book[i];
num[x]++;//映射值加一;
}
map<int,int>::iterator it;
for(int i=0;i<n;i++)
{
if(num[book[i]]==1)
cout<<"BeiJu"<<endl;
else
{
int ans=num[book[i]]-1;
cout<<ans<<endl;
}
}
}
return 0;
} #include<stdio.h>//1.直接全部的人进行比较除去自己跟自己比较
int main()//2.建立新数组 有相同的人数加一 人数为0则输出BeiJu
{
int n,m,i,j,a[200],b[200],num;
scanf("%d%d",&n,&m);//输入
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;i<=n;i++)
{
num=0;
for(j=1;j<=n;j++)
{
if(i!=j)//别跟自己比较
if(a[i]==a[j])
num++;
}
b[i]=num;
}
for(i=1;i<=n;i++)
{
if(b[i]==0) printf("BeiJu\n");
else printf("%d\n",b[i]);
}
}
//map加数组实现
#include<iostream>
(720)#include<cstdio>
#include<map>
using namespace std;
int main(){
int m,n,x;
int number[200];
map<int,int> myMap;
while(scanf("%d%d",&n,&m)!=EOF){
myMap.clear();
for(int i=0;i<n;i++){
scanf("%d",&x);
number[i]=x;
myMap[x]++;
}
for(int i=0;i<n;i++){
if(myMap[number[i]]==1)
printf("BeiJu\n");
else
printf("%d\n",myMap[number[i]]-1);
}
}
return 0;
} #include <iostream>
#include <map>
#include <vector>
using namespace std;
int main(){
int n,m;
while(cin>>n>>m){
vector<int> vec(n);
map<int,int> ma;
for(auto& a:vec){
cin>>a;
ma[a]++;
}
for(const auto& a:vec){
auto& t =ma[a];
if(t==1)
cout<<"BeiJu"<<endl;
else
cout<<t-1<<endl;
}
}
return 0;
} map和vector应用
#include "stdio.h"
int main(){
int n, m, a[200],b[200],i,j;
while(~scanf("%d%d",&n, &m)){
for(i = 0; i < n; i++){
scanf("%d",&a[i]);
b[i] = 0;
}
//比较两个同学喜欢的书籍是否一致,
//一致则将记录每个同学潜在好友数的数组+1
for(i = 0;i < n; i++){
for(j = 0; j < n; j++){
if(a[i] == a[j]) b[i] += 1;
}
b[i] -= 1;//把兴趣和自己一样的自己剪掉
}
for(i = 0; i < n; i ++){
if(b[i] == 0) printf("BeiJu\n");
else printf("%d\n",b[i]);
}
}
return 0;
}
#include<iostream>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int* book=new int[n];
for(int i=0;i<n;i++)
cin>>book[i];
int* friends=new int[n];
for(int i=0;i<n;i++)
friends[i]=0;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(book[i]== book[j]){
friends[i]++;
friends[j]++;
}
}
}
for(int i=0;i<n;i++){
if(friends[i]==0)
cout<<"BeiJu"<<endl;
else
cout<<friends[i]<<endl;
}
} #include<stdio.h>
int main()
{
int i,d;
int N,M;
while(scanf("%d %d",&N,&M)!=EOF)
{
int reader[201]={0},book[201]={0};
for(i=1;i<=N;i++)
{
scanf("%d",&d);
reader[i]=d;
book[d]++;
}
for(i=1;i<=N;i++)
{
if(book[reader[i]]==1)
printf("BeiJu\n");
else printf("%d\n",book[reader[i]]-1);
}
}
return 0;
}
#include<iostream> using namespace std; int main(){ int n,m; cin>>n>>m; int a[n]; for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=0;i<n;i++){ int count =0; for(int j=i+1;j<n;j++){ if(a[i]==a[j]){ count++; } } for(int j =0;j<i;j++){ if(a[i]==a[j]){ count++; } } if(count==0){ cout<<"BeiJu"<<endl; } else cout<<count<<endl; } }
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n, m, a[300];
cin >> n;
cin >> m;
for(int i=0; i<n; i++)
cin >> a[i];
for(int i=0; i<n; i++)
{
if(count(a, a+n, a[i]) > 1)
cout << count(a, a+n, a[i])-1 << endl;
else
cout << "BeiJu" << endl;
}
return 0;
} #include<iostream>
(720)#include<cstdio>
#include<map>
using namespace std;
int main(){
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
map<int,int> book_num;//map<书编号,人数>
map<int,int> stu_book;//map<读者号,书编号>
for(int i=0;i<n;i++){//第i个读者
int bookNumber;
scanf("%d",&bookNumber);
stu_book[i]=bookNumber;//第i个读者喜欢看的书编号为bookNumber;
book_num[bookNumber]++;//同时把喜欢看书编号为bookNumber的人数+1
}
map<int,int>::iterator it;
for(it=stu_book.begin();it!=stu_book.end();it++){//读者号从0~n-1
int num=book_num[it->second]-1;//把自己减掉
if(num==0){
printf("BeiJu\n");
}else{
cout<<num<<endl;
}
}
}
return 0;
}
#include <iostream>
#include<map>
using namespace std;
int main() {
int n,m;
cin>>n>>m;
map<int,int>book;
map<int,int>person;
for(int i=1;i<=n;i++){
int t;
cin>>t;
person[i]=t;
book[t]++;
}
for(int j=1;j<=n;j++){
if((book[person[j]]-1)==0) cout<<"BeiJu"<<endl;
else cout<<book[person[j]]-1<<endl;
}
return 0;
} #include <iostream>
#include <algorithm>
using namespace std;
const int N=210;
int n,m;
int ren[N];//里面放他喜欢的书的编号
int fd[N];
int main() {
scanf("%d%d",&n,&m);//N个读者,M本书
for(int i=1;i<=n;i++){
scanf("%d",&ren[i]);
}
for(int i=1;i<=n;i++){//一个读者一个读者的找
for(int j=1;j<=n;j++){//每个读者遍历一遍
if(ren[i]==ren[j] && (i!=j)){
fd[i]++;//该读者朋友+1
}
}
}
for(int i=1;i<=n;i++){
if(fd[i]!=0) printf("%d\n",fd[i]);
else printf("BeiJu\n");
}
return 0;
}
#include <cstdio>
#include <cstring>
int main() {
int N,M;
while(scanf("%d%d",&N,&M) != EOF){
int book[210]; //存储某书对应的读者数量
int index[210];//存储输入的书的编号
memset(book,0,sizeof(book));
memset(index,0,sizeof(index));
for(int i = 0; i < N; ++i){
scanf("%d",&index[i]);
book[index[i]]++;
}
for(int i = 0; i < N; ++i){
if(book[index[i]] > 1){
printf("%d\n",book[index[i]]-1);
}else{
printf("BeiJu\n");
}
}
}
return 0;
} #include <iostream>
using namespace std;
int stu[10010],books[210];
int main(int argc, char const *argv[])
{
int n,m;
scanf("%d %d",&n,&m);
int fa_book;
for(int i = 0;i<n;i++)
{
scanf("%d",&fa_book);
stu[i] = fa_book;
books[fa_book]++;
}
int flag;
for(int i = 0;i<n;i++){
flag = books[stu[i]] - 1;
if(flag == 0 )
printf("BeiJu\n");
else
printf("%d\n",flag);
}
return 0;
} #include <iostream>
#include<map>
#include<vector>
using namespace std;
int main() {
int n,m;
while (scanf("%d %d",&n,&m)!=EOF) {
map<int,vector<int> >mym;//前面代表书的编号,后面向量代表喜欢同一本书的人
for(int i=0;i<n;i++){
int temp;
scanf("%d",&temp);
mym[temp].push_back(i+1);//temp没有找到则创建并添加
}
map<int,vector<int> >::iterator it;
vector<int>id(n+1);
for(it=mym.begin();it!=mym.end();it++){
for(int i=0;i<it->second.size();i++){
id[it->second[i]]=it->second.size();
}
}
for(int i=1;i<n+1;i++){
//从1开始
if(id[i]>1){
printf("%d\n",id[i]-1);
}else if(id[i]==1){
printf("BeiJu\n");
}
}
}
return 0;
}
// 64 位输出请用 printf("%lld")