• ACWING/3746. 牛的学术圈 II


    题目

    在这里插入图片描述
    在这里插入图片描述

    输入样例1:
    1 3
    dean elsie mildred
    elsie mildred dean
    
    • 1
    • 2
    • 3
    输出样例1:
    B11
    0B?
    0?B
    
    • 1
    • 2
    • 3
    样例1解释
    在这个样例中,单独一份论文 elsie-mildred-dean 并不能提供足够的信息判断 Elsie 比 Mildred 资历更深或更浅。
    
    然而,我们可以推断出 Dean 一定比这两名研究员资历更深,从而资历排序为 Elsie
    • 1
    • 2
    • 3
    输入样例2:
    2 3
    elsie mildred dean
    elsie mildred dean
    elsie dean mildred
    
    • 1
    • 2
    • 3
    • 4
    输出样例2:
    B00
    1B0
    11B
    
    • 1
    • 2
    • 3
    样例2解释
    在这个样例中,唯一能与两篇论文相一致的资历排序为 Elsie
    • 1

    题解

    积分值,资历越深,分数越高
    若发现两个名字是字典序排列,则后者等于前者的分数
    使用map来映射积分

    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    using namespace std;
    
    int main(){
    	int k, n;
    	cin>>k>>n;
    	vector<string> nm;
    	vector<vector<string> > arr;
    	map<string, int> mp;
    	for(int i = 0; i < n; i++){
    		string str;
    		cin>>str;
    		nm.push_back(str);
    		mp[str] = 0;
    	}
    	// 积分值,资历越深,分数越高
    	// 若发现两个名字是字典序排列,则后者等于前者的分数
    	for(int i = 0; i < k; i++){
    		vector<string> temp; // 记录每个位置的名字
    		vector<int> score; // 记录每个位置的得分
    		for(int j = 0; j < n; j++){
    			string str;
    			cin>>str;
    			temp.push_back(str);
    			if(j == 0) score.push_back(0);	
    			else if(str > temp[j-1]){
    				mp[str] += score[j-1]; 
    				score.push_back(score[j-1]);
    			}
    			else{
    				mp[str] += j;
    				score.push_back(j);
    			}
    		} 
    	
    	}
    	
    //	map::iterator itr, itr2;
    	
    	for(int i = 0; i < nm.size(); i++){
    		for(int j = 0; j < nm.size(); j++){
    			if(i == j) cout<<"B";
    			else{
    				if(mp[nm[i]] > mp[nm[j]]) cout<<1;
    				else if(mp[nm[i]] == mp[nm[j]]) cout<<"?";
    				else cout<<0;
    			}
    		}
    		cout<<endl;
    	}
    	
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
  • 相关阅读:
    基于minist数据集用VAE训练生成图片(VAE基础入门学习)
    leetcode 5229: 拼接数组的最大分数
    JWT简介& JWT结构& JWT示例& 前端添加JWT令牌功能& 后端程序
    商汤发布象棋机器人『元萝卜』;『南瓜书』西瓜书公式推导&解析;代码自动美化插件;Tock建立对话机器人的AI平台;前沿论文 | ShowMeAI资讯日报
    如何理解springboot的自动注入
    css3实现3D立方体旋转特效源码
    2011年01月25日 Go生态洞察:Go与JSON的高效结合
    MIKE水动力笔记12_数字化海图1之提取确值水深点
    Jmeter 简单的压力测试!
    Java实现字符串多字符替换
  • 原文地址:https://blog.csdn.net/weixin_44639164/article/details/126251317