源代碼:https://github.com/yunwei37/myClassNotes
還有不少數據結構和算法相關的筆記以及pta題解哦x
卡時間卡的好嚴格的…
假設全校有最多40000名學生和最多2500門課程。現給出每門課的選課學生名單,要求輸出每個前來查詢的學生的選課清單。
輸入格式:
輸入的第一行是兩個正整數:N(≤40000),爲前來查詢課表的學生總數;K(≤2500),爲總課程數。此後順序給出課程1到K的選課學生名單。格式爲:對每一門課,首先在一行中輸出課程編號(簡單起見,課程從1到K編號)和選課學生總數(之間用空格分隔),之後在第二行給出學生名單,相鄰兩個學生名字用1個空格分隔。學生姓名由3個大寫英文字母+1位數字組成。選課信息之後,在一行內給出了N個前來查詢課表的學生的名字,相鄰兩個學生名字用1個空格分隔。
輸出格式:
對每位前來查詢課表的學生,首先輸出其名字,隨後在同一行中輸出一個正整數C,代表該生所選的課程門數,隨後按遞增順序輸出C個課程的編號。相鄰數據用1個空格分隔,注意行末不能輸出多餘空格。
輸入樣例:
10 5
1 4
ANN0 BOB5 JAY9 LOR6
2 7
ANN0 BOB5 FRA8 JAY9 JOE4 KAT3 LOR6
3 1
BOB5
4 7
BOB5 DON2 FRA8 JAY9 KAT3 LOR6 ZOE1
5 9
AMY7 ANN0 BOB5 DON2 FRA8 JAY9 KAT3 LOR6 ZOE1
ZOE1 ANN0 BOB5 JOE4 JAY9 FRA8 DON2 AMY7 KAT3 LOR6
輸出樣例:
ZOE1 2 4 5
ANN0 3 1 2 5
BOB5 5 1 2 3 4 5
JOE4 1 2
JAY9 4 1 2 4 5
FRA8 3 2 4 5
DON2 2 4 5
AMY7 1 5
KAT3 3 2 4 5
LOR6 4 1 2 4 5
//7-49 打印學生選課清單 (25 分)
#include<bits/stdc++.h>//萬能頭文件get
using namespace std;
//參考: https://blog.csdn.net/Dream_Weave/article/details/81185805
//不使用優先隊列而在最後進行sort排序;
map<string,vector<int> > mp;
//不能用cin...
int main(){
int n,m;
scanf("%d%d",&n,&m);
int k,id;
char name[7];
for(int i=0;i<m;i++){
scanf("%d%d",&id,&k);
for(int j=0;j<k;j++){
scanf("%s",name);
mp[name].push_back(id);
}
}
vector<int> tpq;
for(int i=0;i<n;i++){
scanf("%s",name);
tpq=mp[name];
printf("%s",name);
printf(" %d",tpq.size());
sort(tpq.begin(),tpq.end());
vector<int>::iterator tpq1=tpq.begin();
while(tpq1!=tpq.end()){
printf(" %d",*tpq1);
++tpq1;
}
printf("\n");
}
return 0;
}