码迷,mamicode.com
首页 > 其他好文 > 详细

1039 Course List for Student

时间:2018-10-08 17:16:45      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:turn   using   lis   har   ace   mes   ref   back   错误   

题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805447855292416

开散列的方法是我从别人博客学到的,也是第一次用,感觉挺好用的,下次遇见这样的题目就有思路了。

然后里面sync_with_stdio(false)和下面的那句话是为了加速输入输出的,这是c++兼容c输入输出的方式,但是在测试的时候,oj会报段错误,我测试了一下,只有这两句话还是会报错,之前我也用过这样的语句,没报错,这里是为什么呢?

代码如下:

 1 #include<iostream>
 2 #include<vector>
 3 #include<stdio.h>
 4 #include<fstream>
 5 #include<algorithm>
 6 #include<cstdlib>
 7 using namespace std;
 8 const int maxn = 26*26*26+10;
 9 int trans(char name[]){
10     int ret = 0;
11     for(int i = 0; i < 3; i++){
12         ret = ret*26+name[0]-A;
13     }
14     ret += name[3]-0;
15     return ret;
16 }
17 vector<int> v[maxn];
18 int main(){
19     //ios::sync_with_stdio(false);
20     //cin.tie(0);
21     int n,m,k,l;
22     int stem;
23     char name[5];
24     cin >> n >> m;
25     for(int i = 0; i < m; i++){
26         cin >> k >> l;
27         for(int j = 0; j < l; j++){
28             scanf("%s",name);
29 //            cin >> name;
30             stem = trans(name);
31             v[stem].push_back(k);
32 //            cout << stem << endl;
33         }
34     }
35     vector<int>::iterator it;
36     for(int i = 0; i < n; i++){
37         scanf("%s",name);
38 //        cin >> name;
39         stem = trans(name);
40         cout << name << " " << v[stem].size();
41         sort(v[stem].begin(),v[stem].end());
42         for(it = v[stem].begin(); it != v[stem].end(); it++){
43             cout << " " << *it;
44         }
45         cout << endl;
46     }
47     return 0;
48 }

 

1039 Course List for Student

标签:turn   using   lis   har   ace   mes   ref   back   错误   

原文地址:https://www.cnblogs.com/huhusw/p/9755356.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!