Timus 1446. Sorting Hat 分类问题

At the start of each school year, a very important event happens at Hogwarts. Each of the first-year wizards and witches is assigned to one of the four Hogwarts houses. The bravest children are put to Gryffindor, the cleverest are put to Ravenclaw, the most hard-working go to Hufflepuff, and Slytherin becomes home to the most ambitious. The assignment is carried out in the Great Hall of Hogwarts castle in the following way: when the name of a first-year student is called, he or she comes out to the center of the Hall and puts on the famous Sorting Hat. The Hat estimates the situation in the head of the young wizard or witch and cries out the name of the house to which the student is assigned. A special elf writes down the Hat's decisions. After the sorting, the elf must quickly compile lists of students of each house. Members of the Society for the Promotion of Elfish Welfare beg you to help the elf in this hard work.

Input

The first line contains the number of first-year students N (1 ≤ N ≤ 1000). In the next 2N lines there are their names followed by houses in which the Sorting Hat placed them. A student's name may contain lowercase and uppercase English letters, spaces and hyphens. Each name contains not more than 200 symbols.

Output

Output lists of students of each house in the following format. In the first line there is the name of the house, then a colon, and in the next lines there is the list of students, one in a line. The lists must be given in the following order: Slytherin, Hufflepuff, Gryffindor, Ravenclaw. There must be empty lines between the lists. In each list, names must be given in the order in which they were called out during the sorting. It is guaranteed that each list will contain at least one student.

Sample

这是个利用map来分类的问题。

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

注意一下getline的运用,会把之前遗漏下来的换行符都继续读取的,所以记得要去掉之前有输入而又不使用getline读入的换行符。

利用一个数据结构:unordered_map<string, vector<string>>就能解决问题了

#include <string>
#include <vector>
#include <iostream>
#include <unordered_map>
using namespace std;  

namespace{  

    static const int HOUSES = 4;
    string houses[HOUSES] = {"Slytherin","Hufflepuff","Gryffindor","Ravenclaw"};  

}  

void SortingHat1446()
{
    int n = 0;
    cin>>n;     

    string name, houseName;
    cin.ignore();//注意:去掉这个dumb换行符  

    unordered_map<string, vector<string> > umSVS;
    for (int i = 0; i < n; i++)
    {
        getline(cin, name);
        getline(cin, houseName);
        umSVS[houseName].push_back(name);
    }
    for (int i = 0; i < HOUSES; i++)
    {
        vector<string> tmp = umSVS[houses[i]];
        cout<<houses[i]<<":\n";
        for (int j = 0; j < (int)tmp.size(); j++)
        {
            cout<<tmp[j]<<endl;
        }
        cout<<endl;
    }
}
int main()
{
    SortingHat1446();
    return 0;
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索include
, getline
, getline()
, 换行符
, name
, of
, The
unordered_map
sorting hat、timus、acm.timus.ru、timus online judge、sorting,以便于您获取更多的相关知识。

时间: 2025-01-20 16:51:39

Timus 1446. Sorting Hat 分类问题的相关文章

POJ题目分类

初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      (4)递推.      (5)构造法.(poj3295)      (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法:      (1)图的深度优先遍历和广度优先遍历.      (2)最短路径算法(dijkstra,bellman-ford

Linux的病毒发展史及特征分类

1996年的Staog是Linux系统下的第一个病毒,它出自澳大利亚一个叫VLAD的组织(Windows 95下的第一个病毒程序Boza也系该组织所为).Staog病毒是用汇编语言编写,专门感染二进制文件,并通过三种方式去尝试得到root权限. Staog病毒并不会对系统有什么实质性的损坏.它应该算是一个演示版.它向世人揭示了Linux可能被病毒感染的潜在危险.Linux系统上第二个被发现的病毒是Bliss病毒,它是一个不小心被释放出来的实验性病毒.与其它病毒不同的是,Bliss本身带有免疫程序

像UNO一样有趣的分类设计法

  在设计数字产品或是帮目录进行编排的时候,良好的分类就是个重要的问题.好的分类方式可以清楚的让读者了解整本书.整个网站或是整个产品的大略内容,分类的项目与名称可以帮助读者与使用者建立概观,能够更轻松.更顺畅的深入内容,并与内容产生互动. 不同的内容与不同的读者都会造就独具特色的分类方式.与条目名称,在传统的图书馆分类法中,Melvil Dewey 所发明的杜威十进制分类法(Dewey Decimal Classification)就是一个很有名的例子,被广泛的运用在许多西方的图书馆中.亚洲许多

使用libsvm实现文本分类

文本分类,首先它是分类问题,应该对应着分类过程的两个重要的步骤,一个是使用训练数据集训练分类器,另一个就是使用测试数据集来评价分类器的分类精度.然而,作为文本分类,它还具有文本这样的约束,所以对于文本来说,需要额外的处理过程,我们结合使用libsvm从宏观上总结一下,基于libsvm实现文本分类实现的基本过程,如下所示: 选择文本训练数据集和测试数据集:训练集和测试集都是类标签已知的: 训练集文本预处理:这里主要包括分词.去停用词.建立词袋模型(倒排表): 选择文本分类使用的特征向量(词向量):

poj分类

初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      (4)递推.      (5)构造法.(poj3295)      (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法:      (1)图的深度优先遍历和广度优先遍历.      (2)最短路径算法(dijkstra,bellman-ford

ZOJ和PKU 题目分类

ZOJ题目分类初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 1334 1337 1338 1350 1365 1382 1383 1394 1402 1405 1414 1494 1514 1622 1715 1730 1755 1760 1763 1796 1813 1879 1889 1904 1915 1949 2001 2022 2099 2104 21

《Linux C编程从入门到精通》一第1章 Linux基础1.1 Linux的起源、发展和分类

第1章 Linux基础 Linux C编程从入门到精通 Linux是一套免费使用和自由传播的类UNIX操作系统,它已发展成为现今世界上最流行的一种操作系统.Linux不仅仅能在PC机上运行,随着嵌入式系统的发展,它已经被广泛地应用于各种场合. 1.1 Linux的起源.发展和分类 Linux C编程从入门到精通 Linux从1991年问世到现在已经有20多年的历史,它从一个架构简单的系统内核发展到了现在结构完整.功能丰富的多版本操作系统,本小节将介绍其起源发展和分类. 1.1.1 Linux的起

【技术贴】red hat 9.0 找不到www.baidu.com.请检查名称并重试 net虚拟机设

虚拟机下red hat9.0 linux选择net上网设置... StaRT...    发表于2010年06月09日 13:48 阅读(0) 评论(0) 分类: 权限: 公开 很多人都说red hat9.0用自带浏览器上网处于 找不到www.baidu.com.请检查名称并重试" 的解决办法. 很简单,开始--系统设置--网络--打开你的网卡--设置dns为你的主机的dns即可!!而且选择dhcp模式.懂了没? 截图一 设置你的网卡为激活 激活方法如下 1.终端下输入netconfig回车,选

Black Hat|长亭科技:防SQL注入利器-SQLChop

本文讲的是 Black Hat|长亭科技:防SQL注入利器-SQLChop,当程序过分信任用户的输入,直接将用户的输入与后台的SQL语句拼接在一起并执行时,如果用户输入带有恶意,SQL注入就发生了. 美国当地时间8月5日,国内安全新兴企业长亭科技在黑帽大会的军火库分会场(Arsenal),现场为来自全球各地的安全从业人员进行技术讲解,并演示他们的"无规则SQL注入攻击检测与防御引擎". 结合统计资料和实际情况来看,SQL注入仍然占据互联网威胁安全事件中非常大的比例(接近1/3)而且并没