UVa 11239

来源:互联网 发布:淘宝网夏季女装短裤 编辑:程序博客网 时间:2024/06/11 07:01

題目:學校有一些開源項目,學生會對項目進行登記,統計每個項目有多少學生註冊,

            每個學生最多可以註冊一個,但是有些學生註冊了多個項目、則所有註冊無效,

            有些學生同一項目註冊了多次、只計算一次。

分析:字符串。使用map記錄查詢。

            定義一個user_select標記數組,記錄學生註冊的第一個課程、如果多個記-1。

說明:目標900題,( ⊙ o ⊙ )!

#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <map>using namespace std;typedef struct _account{int project_id;int user_count;}account;account ans[101];string project[101];string user[10001];int    user_select[10001];bool cmp(account a, account b){if (a.user_count == b.user_count) {return project[a.project_id] < project[b.project_id];}else {return a.user_count > b.user_count;}}int main(){string buf;while (getline(cin, buf) && buf[0] != '0') {int project_size = 0, user_size = 0;map <string, int> project_map;map <string, int> user_map;fill(user_select, user_select+10001, 0);while (buf[0] != '1') {int project_id = project_map[buf];if (!project_id) {project[project_id = ++ project_size] = buf;project_map[buf] = project_id;}getline(cin, buf);while (buf[0] >= 'a' && buf[0] <= 'z') {int user_id = user_map[buf];if (!user_id) {user[user_id = ++ user_size] = buf;user_map[buf] = user_id;user_select[user_id] = project_id;}else if (user_select[user_id] != project_id) {user_select[user_id] = -1;}getline(cin, buf);}}for (int i = 1; i <= project_size; ++ i) {ans[i].project_id = i;ans[i].user_count = 0;}for (int i = 1; i <= user_size; ++ i) {if (user_select[i] > 0) {ans[user_select[i]].user_count ++;}}sort(ans+1, ans+project_size+1, cmp);for (int i = 1; i <= project_size; ++ i) {cout << project[ans[i].project_id] << " " << ans[i].user_count << endl;}}}


0 0
原创粉丝点击