题意:给出K门课程(编号1~K)以及报名该课程的学生,然后有N个学生查询,对于每一个查询,输出该学生所报的相关课程编号,且要求编号按增序输出。

思路:题目不难,解析略。(本来用map直接映射,用STL的string存储姓名是会超时的,结果今天再测了一下结果能AC了,什么鬼!?)考试时,如果只是纯映射关系,无需键值有序,可以用unordered_map,头文件在<unordered_map>下,如果会超时再尝试字符串哈希的方法。简单的字符串哈希就是下面的change()函数,需记住。

代码:

#include <cstdio>
#include <cstring>
#include <set>
using namespace std;
***+;
set<int> stu[N];//stu[i]存放学生所选择的课程编号,利用set的自动排序

//将字符串映射成数字
int change(const char *str)
{
    ,i=;
    int len=strlen(str);
    ;i++)
        id=*id+(str[i]-'A');
    id=id*+str[i]-';
    return id;
}

int main()
{
    int queryCnt,k;
    scanf("%d%d",&queryCnt,&k);
    int courseid,m;
    ];
    ;i<=k;i++){
        scanf("%d%d",&courseid,&m);
        while(m){
            scanf("%s",name);
            int id=change(name);
            stu[id].insert(courseid);
            m--;
        }
    }
    ;i<queryCnt;i++){
        scanf("%s",name);
        int id=change(name);
        printf("%s %d",name,stu[id].size());
        for(auto it:stu[id]) printf(" %d",it);
        printf("\n");
    }
    ;
}

1039 Course List for Student的更多相关文章

  1. 1039. Course List for Student (25)

    题目链接:http://www.patest.cn/contests/pat-a-practise/1039 题目: 1039. Course List for Student (25) 时间限制 2 ...

  2. PAT 1039 Course List for Student[难]

    1039 Course List for Student (25 分) Zhejiang University has 40000 students and provides 2500 courses ...

  3. PAT 甲级 1039 Course List for Student (25 分)(字符串哈希,优先队列,没想到是哈希)*

    1039 Course List for Student (25 分)   Zhejiang University has 40000 students and provides 2500 cours ...

  4. PAT 1039. Course List for Student

    Zhejiang University has 40000 students and provides 2500 courses. Now given the student name lists o ...

  5. 1039 Course List for Student (25分)

    Zhejiang University has 40000 students and provides 2500 courses. Now given the student name lists o ...

  6. PAT 1039 Course List for Student (25分) 使用map<string, vector<int>>

    题目 Zhejiang University has 40000 students and provides 2500 courses. Now given the student name list ...

  7. PAT甲题题解-1039. Course List for Student (25)-建立映射+vector

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789157.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  8. PAT (Advanced Level) 1039. Course List for Student (25)

    map会超时,二分吧... #include<iostream> #include<cstring> #include<cmath> #include<alg ...

  9. 【PAT甲级】1039 Course List for Student (25 分)(vector嵌套于map,段错误原因未知)

    题意: 输入两个正整数N和K(N<=40000,K<=2500),分别为学生和课程的数量.接下来输入K门课的信息,先输入每门课的ID再输入有多少学生选了这门课,接下来输入学生们的ID.最后 ...

随机推荐

  1. 腾讯开源的Android UI框架——QMUI Android

    各位同学,早上好,我是你们的老朋友D_clock爱吃葱花,前些天忙着发版本,最近也在看各种各样的新知识,有好多东西想写啊啊啊啊啊.嗯,先冷静捋一下,卖个关子.扯回正题,今天继续为大家推荐一个Githu ...

  2. PowerDesigner之SQL表格设计

    设计表格我觉得用PowerDesigner比起在SQL Server中设计表格简单快捷许多. 首先,我们新建一个Model(可以使用快捷键Ctrl + N) 在PowerDesigner中侧边栏有浮动 ...

  3. python学习笔记(unittest)

    刚刚放假回来我想很多人都还没有缓过来吧 这次介绍一个python自带的测试框架 unitest #!/usr/bin/env python # -*- coding: utf_8 -*- import ...

  4. 解决Oracle数据库IP地址改变创建数据库的问题

    方案一 查了相关的资料后才知道,只要修改安装Oracle的目录下面的listener.ora和tnsnames.ora里面的内容即可.看图看图  修改什么内容呢?看图看图. 就是HOST地址改一下就可 ...

  5. linux下vim对于意外退出的文档的再次开启

    转载的: 1.对于同一个文件如果上次已经打开,而未关闭的情况下,又打开该文件进行编辑时,会出现如下提醒: 这是由于已经打开但未闭关的文件,会在其目录下出现一个.swp的文件,由于是属于隐藏文件,可以用 ...

  6. 条款14:在资源管理类中小型coping的行为

    首先假设对于一个mutex互斥器对象,有lock以及unlock两个函数可用: void lock(Mutex * pm); void unlock(Mutex * pm); 那么为了防止资源忘记被释 ...

  7. Java中会有内存泄露吗?

    一.Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址.Java中对象是采用new或者反射的方法创建的, 这些对象的创建都是在堆(He ...

  8. New Concept English three (36)

    21 54 We are less credulous than we used to be. In the nineteenth century, a novelist would bring hi ...

  9. Django常用插件

    1 富文本编辑器--tinymce 2 分页器--pure pagination 视图中 all_orgs_list = CourseOrg.objects.all() try: page = req ...

  10. phpcms内容限制(转发自王小明爱红领巾)

    因为页面显示需要对文章内容做剪切,所以用到{str_cut($r[content],60)},但是出现了乱码 所以 {str_cut(strip_tags($r[content]),60)}加stri ...