PAT1039: Course List for Student
1039. Course List for Student (25)
Zhejiang University has 40000 students and provides 2500 courses. Now given the student name lists of all the courses, you are supposed to output the registered course list for each student who comes for a query.
Input Specification:
Each input file contains one test case. For each case, the first line contains 2 positive integers: N (<=40000), the number of students who look for their course lists, and K (<=2500), the total number of courses. Then the student name lists are given for the courses (numbered from 1 to K) in the following format: for each course i, first the course index i and the number of registered students Ni (<= 200) are given in a line. Then in the next line, Ni student names are given. A student name consists of 3 capital English letters plus a one-digit number. Finally the last line contains the N names of students who come for a query. All the names and numbers in a line are separated by a space.
Output Specification:
For each test case, print your results in N lines. Each line corresponds to one student, in the following format: first print the student's name, then the total number of registered courses of that student, and finally the indices of the courses in increasing order. The query results must be printed in the same order as input. All the data in a line must be separated by a space, with no extra space at the end of the line.
Sample Input:
11 5
4 7
BOB5 DON2 FRA8 JAY9 KAT3 LOR6 ZOE1
1 4
ANN0 BOB5 JAY9 LOR6
2 7
ANN0 BOB5 FRA8 JAY9 JOE4 KAT3 LOR6
3 1
BOB5
5 9
AMY7 ANN0 BOB5 DON2 FRA8 JAY9 KAT3 LOR6 ZOE1
ZOE1 ANN0 BOB5 JOE4 JAY9 FRA8 DON2 AMY7 KAT3 LOR6 NON9
Sample Output:
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
NON9 0 思路 1.题目比较简单,关键是优化问题,如果直接用map<string,vector<int>>最后一个用例会超时,因为本身对map和string的操作相比char + 整数来说更耗时间。
2.所以得自己写一个简单的散列函数将名字散列为vector的整数索引来代替map,另外使用char数组存储名字而不是string,输入输出最好也换成scanf和printf而不是cin、cout。 超时代码
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
using namespace std; int main()
{
int N,K;
while(cin >> N >> K)
{
map<string,vector<int>> students;
students.clear();
for(int i = 0;i < K;i++)
{
int course,num;
cin >> course >> num;
for(int j = 0;j < num;j++)
{
string name;
cin >> name;
students[name].push_back(course);
}
}
for(int i = 0;i < N;i++)
{
string name;
cin >> name;
cout << name << " " << students[name].size();
sort(students[name].begin(),students[name].end());
for(int j = 0;j < students[name].size();j++)
{
cout << " " << students[name][j];
}
cout << endl;
}
}
}
AC代码
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
const int maxnum = 26 * 26 * 26 * 10 + 1; int HashName(char* name)
{
return (name[0] - 'A') * 26 * 26 * 10 +
(name[1] - 'A') * 26 * 10 +
(name[2] - 'A') * 10 +
(name[3] - '0');
} int main()
{
int N,K;
while(cin >> N >> K)
{
vector<vector<int>> students(maxnum);
char name[5];
for(int i = 0;i < K;i++)
{
int course,num;
cin >> course >> num;
for(int j = 0;j < num;j++)
{
scanf("%s",name);
students[HashName(name)].push_back(course);
}
}
for(int i = 0;i < N;i++)
{
scanf("%s",name);
int index = HashName(name);
printf("%s %lu", name, students[index].size());
sort(students[index].begin(),students[index].end());
for(int j = 0;j < students[index].size();j++)
{
cout << " " << students[index][j];
}
cout << endl;
}
}
}
PAT1039: Course List for Student的更多相关文章
- PAT1047: Student List for Course
1047. Student List for Course (25) 时间限制 400 ms 内存限制 64000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Y ...
- java.io.NotSerializableException: test.io.file.Student
java.io.NotSerializableException: test.io.file.Student at java.io.ObjectOutputStream.writeObject0 ...
- 使用java反射机制编写Student类并保存
定义Student类 package org; public class Student { private String _name = null; ; ; public Student() { } ...
- 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
- The constructor User.Student(String, String, String) is not visible
项目:蒙文词语检索 日期:2016-05-01 提示:The constructor User.Student(String, String, String) is not visible 出处:Db ...
- Java-集合-第三题 有如下Student 对象, private String name; private int age; private int score; private String classNum; 其中,classNum 表示学生的班号,例如“class05”。 有如下List List list = new ArrayList(); l
第三题 有如下Student 对象, private String name; private int age; private int score; private String classNum; ...
- student表中创建触发器,实现student表和student _course表的级联删除
create trigger Delete_sc on student for delete as delete student_course where student_course.s_no in ...
- 第三题 有如下Student 对象, private String name; private int age; private int score; private String classNum; 其中,classNum 表示学生的班号,例如“class05”。 有如下List List list = new ArrayList();
list.add(new Student("Tom", 18, 100, "class05")); list.add(new Student("Jer ...
- 编写Java应用程序。首先,定义描述学生的类——Student,包括学号(int)、 姓名(String)、年龄(int)等属性;二个方法:Student(int stuNo,String name,int age) 用于对对象的初始化,outPut()用于输出学生信息。其次,再定义一个主类—— TestClass,在主类的main方法中创建多个Student类的对象,使用这些对象来测 试Stud
package zuoye; public class student { int age; String name; int stuNO; void outPut() { System.out.pr ...
随机推荐
- Binder和SurfaceFlinger以及SystemServer介绍-android学习之旅(79)
由于binder机制的存在,使得进程A可以访问进程B中的对象. Android系统Binder机制中的四个组件Client.Server.Service Manager和Binder驱动程序: 1. ...
- php opcode缓存
本文移至:http://www.phpgay.com/Article/detail/classid/2/id/61.html 1.什么是opcode 解释器分析代码之后,生成可以直接运行的中间代码,就 ...
- "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no freetype in java.library.path
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no freetype in java ...
- jquery 加法 乘法运算 精确计算函数
int类型相加不会出现问题,但小数点相加就会出现问题 //乘法函数 var accMul = function(arg1, arg2){ var m=0,s1=arg1.toString(),s2=a ...
- Word中去除/删除/删掉Equation Chapter (Next) Section 1
实际问题如图显示 Equation Chapter (Next) Section 1 . 具体操作步骤如下: 1.Word的"格式"菜单--"样式和格式",出现 ...
- Open Source BI Platform List
资源入口: awesome-business-intelligence https://github.com/thenaturalist/awesome-business-intelligence h ...
- Hibernate JPA 动态criteria语句针对null查询条件的特殊处理
最近原Hibernate项目需要添加一个条件,结构有点类似下面的格式,学生和房间是多对一的关系,现在要查询所有没有房间的学生. Class Student{ @ManyToOne Room room; ...
- spring boot:thymeleaf使用详解
简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP .相较与其他的模板引擎,它有如下三个极吸引人的特点: 1.Thymeleaf 在 ...
- [ Java面试题 ] 框架篇
1.谈谈你对Struts的理解. 1. struts是一个按MVC模式设计的Web层框架,其实它就是一个Servlet,这个Servlet名为ActionServlet,或是ActionServlet ...
- 浅谈编程语言中的新宠Python,你叫它如何不火?
论述 凡是对编程有所关注的朋友都已经知道,Python公布于1991年,即使出现的时间不是很遥远,但是在众多爱好者的贡献下已经发展到全民Python的地步. Python最近火起来的笼统原因:面向企业 ...