NBUT 1114 Alice's Puppets(排序统计,水)

题意:给一棵人名树,按层输出,同层则按名字的字典序输出。

思路:首先对每个人名做索引,确定其在哪一层,按层装进一个set,再按层输出就自动排好序了。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 vector< set<string> > ord;    //每层一个set,自动按照字典序排好了
 4 map<string,int>   mapp;    //作哈希用
 5
 6 int main()
 7 {
 8     //freopen("input.txt", "r", stdin);
 9     int n;
10     string son,far;
11     set<string> tmp;
12     while(cin>>n)
13     {
14         ord.clear();
15         for(int i=0; i<=n; i++)    ord.push_back(tmp);  //初始化
16         mapp.clear();
17         mapp["Alice"]=0;
18         int k=0;
19         for(int i=0; i<n; i++)
20         {
21             cin>>son>>far;
22             k=mapp[far];
23             mapp[son]=++k;//son的层数是far结点的层数+1
24             ord[k].insert(son);
25         }
26
27         for(int i=1; i<=n; i++)
28         {
29             if(ord[i].empty()==true)    break;
30             else
31             {
32                 for(set<string>::iterator it=ord[i].begin(); it!=ord[i].end(); it++)
33                     cout<<*it<<" "<<i<<endl;
34             }
35         }
36     }
37
38     return 0;
39 }

AC代码

NBUT 1114 Alice's Puppets(排序统计,水)

时间: 2024-08-01 12:44:26

NBUT 1114 Alice's Puppets(排序统计,水)的相关文章

NBUT 1118 Marisa&#39;s Affair (排序统计,水)

题意:每行给出一个人名和一个int值,人名可重复出现.要求对同一个人名统计int值,最大的先输出,若相同,则按照人名出现次数,若再相同,则按照人名字典序. 思路:输入完全部进行排序,写个比较函数传进去sort即可. 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 struct node 5 { 6 char nam[22]; 7 int lik; 8 int tim; 9 }a[5500]; 10 11 map<string,

NBUT 1122 Shameimaru&#39;s Candid Camera(水)

题意:给n*m个格子,初始时每个格子中有个数值为0,部分格子中含有炸弹,每个炸弹爆炸可以将周围的8个非炸弹格子中的数值加1,求全部炸弹炸完后那些非0且非炸弹格子中的数是多少. 思路:另开一个矩阵,每炸弹一炸就9个格子全加1,全炸完后再输出时判断是否为0,若是则输出'-',否则,若是炸弹格子则输出'*',若是数字就输出该数字. 1 #include <bits/stdc++.h> 2 using namespace std; 3 int a[550][550];//统计数值 4 int n, m

NBUT 1115 Cirno&#39;s Trick (超水)

题意:给出多个double数,去掉其最小的和最大的,再对余下的求均值. 思路:再输入时将最大和最小去掉,顺便统计非最值的和,输出时除一下个数即可. 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int main() 5 { 6 //freopen("input.txt", "r", stdin); 7 int n; 8 while(~scanf("%d",&n))

POJ 1698 Alice&#39;s Chance 网络流(水

题目链接:点击打开链接 题目大意:   有个人想拍n部电影,每部电影限定每周哪几天可以拍 并且必须在第ki周之前把这部电影拍完,问能否拍完n部电影 解题思路:  把每部电影当作一个顶点,源点指向这些顶点,容量为该电影需要拍多少天 然后把每一天都当作顶点,某个工作可以在这天完成就连容量为1大边 每天的顶点指向汇点,容量也为1 最后求出最大流,满流则说明可以完成这些工作 啦啦啦 #include <cstdio> #include <cstring> #include <algo

nyist oj 540 奇怪的排序(水题)

奇怪的排序 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 最近,Dr. Kong 新设计一个机器人Bill.这台机器人很聪明,会做许多事情.惟独对自然数的理解与人类不一样,它是从右往左读数.比如,它看到123时,会理解成321.让它比较23与15哪一个大,它说15大.原因是它的大脑会以为是32与51在进行比较.再比如让它比较29与30,它说29大. 给定Bill两个自然数A和B,让它将 [A,B] 区间中的所有数按从小到大排序出来.你会认为它如何排序? 输入 第一

linux 下简单常用文件查看/处理/排序/统计等命令

cat命令:即查看文件命令 选项:-n:显示行号 -E: 显示每行结束符$ 2.more命令: 分屏显示文件命令 space:空格键向后翻一屏 b:向前翻一屏 Enter:回车键向下显示一行 3.less命令:分屏显示文件命令,使用方法如同man命令 space:向后翻一屏 b: 向前翻一屏 Enter:回车键向后显示一行 k: 向前显示一行 4.head命令:查看头几行 -n:显示头几行,默认显示头10行 例:      head -n 10 /etc/passwd 也可以写成 head -1

日志查找排序统计

背景:查找10万个请求中,异常返回的请求get 1是否与省份有关?集中在部分省份还是所有省份? 命令:head -n 100000 test.log|grep  "get 1" |awk '{print $8}'|cut -d = -f 3|sort|uniq -c|sort -r 1.head -n 100000 test.log:显示test.log中开头的10万行 延伸阅读转载:https://www.cnblogs.com/zdz8207/p/linux-log-tail-ca

codevs 1487 大批整数排序(水题日常)

时间限制: 3 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题目描述 Description !!!CodeVS开发者有话说: codevs自从换了评测机,新评测机的内存计算机制发生变化 计算内存的时候会包括栈空间 swap空间 这题的2M是单指内存空间... 十分十分抱歉 抱歉 !!! 现在有一大批(总数不超过10000000个)1到10之间的整数,现在请你从小到大进行排序输出. (测试数据将超过11MB.) 输入描述 Input Description 第一行表示将下排序

hdu 1106 排序(水题)

题目描述: 输入一行数字,如果我们把这行数字中的'5'都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以'0'开头,这些头部的'0'应该被忽略掉,除非这个整数就是由若干个'0'组成的,这时这个整数就是0).你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出. 输入: 输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000.输入数据保证:分割得到的非负整数不会大于100000000:输入数据不可能全由'5'组成. 例如:005123