• A1039 Course List for Student (25 分)


    一、技术总结

    1. 这里由于复杂度的限制,只能够使用vector,然后进行字符串转化:考虑到string、cin、cout会超时,可以使⽤用hash(262626*10+10)将学⽣生姓名变为int型,然后存储在vector里
    2. 这里出了一个巨大的问题,就是审题不清导致最后格式结果不正确。
    3. 还有就是空格输出问题,要注意前面是否已经有输出了。
    4. 还有就是字符串转化成int存储,hash列表的应用,空间换时间
    int getID(char name[]){
        int id = 0;
        for(int i = 0; i < strlen(name); i++){
            id = 26*id + (name[i] - 'A');
        } 
        return id;   
    }
    

    二、参考代码

    #include<iostream>
    #include<vector>
    #include<algorithm>
    #include<set>
    using namespace std;
    const int N = 40010;
    const int M = 26*26*26*10 + 1;
    vector<int> selectCourse[M];
    int getID(char name[]){
    	int id = 0;
    	for(int i = 0; i < 3; i++){
    		id = id*26 + (name[i] - 'A');
    	}
    	id = id*10 + (name[3] - '0');
    	return id;
    }
    int main(){
    	int n,k,id = 0;
    	char name[5];
    	cin >> n >> k;
    	for(int i = 0; i < k; i++){
    		int coursenum, number;
    		scanf("%d%d", &coursenum, &number);
    		for(int j = 0; j < number; j++){
    			scanf("%s", name);
    			id = getID(name);
    			selectCourse[id].push_back(coursenum);
    		}
    	}
    /*
    	for(int i = 0; i < n; i++) {        
    		scanf("%s", name);        
    		id = getID(name);        
    		sort(selectCourse[id].begin(),selectCourse[id].end());        
    		printf("%s %lu", name, selectCourse[id].size());        
    		for(int j = 0; j < selectCourse[id].size(); j++)            
    			printf(" %d", selectCourse[id][j]);        
    		printf("
    ");    }    
    	return 0;
    */
    	char str[n+1][5];
    	for(int i = 0; i < n; i++){
    		scanf("%s", str[i]);
    	}
    	for(int i = 0; i < n; i++){
    		int id = getID(str[i]);
    		sort(selectCourse[id].begin(), selectCourse[id].end());
    		printf("%s %d", str[i], selectCourse[id].size());
    		for(int j = 0; j < selectCourse[id].size(); j++){
    			//if(j != 0) printf(" ");
    			printf(" %d", selectCourse[id][j]);
    			
    		}
    		printf("
    ");
    	}
    	return 0;
    
    } 
    
    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    Python中变量的作用域
    Python中关于函数的介绍
    python列表中的赋值与深浅拷贝
    Python中关于集合的介绍及用法
    python中文件操作的六种模式及对文件某一行进行修改的方法
    python中文件操作的其他方法
    python中文件操作的基本方法
    python中字符串的一些用法
    python里字典的用法介绍
    小谈python里 列表 的几种常用用法
  • 原文地址:https://www.cnblogs.com/tsruixi/p/11906048.html
Copyright © 2020-2023  润新知