★☆   输入文件:sakinani.in   输出文件:sakinani.out   简单对比
时间限制:1 s   内存限制:256 MB

题目背景

二十一世纪,世界上的麻将竞技人数超过一亿,日本每年也有大规模的全国大赛来对麻将选手进行选拔。从小学到高中,很多学校也设立了麻将部。

《天才麻将少女阿知贺篇 episode of side-A》『 -Saki- 阿知賀編 episode of side-A』是《天才麻将少女》『 -Saki-』的外传,从另一个视角讲述麻将少女们的故事。故事背景设定在《天才麻将少女》本篇第二主角原村和曾生活的奈良县,主角校为阿知贺女子学院。(有问题?内事百度,外事谷歌)

由于阿知贺人物存在感不够强,导致该作被称为“千里山篇”「 -Toki- 千里山編」,甚至 2012 年动画最萌也是千里山的園城寺怜同学。我们一直很疑惑这到底谁是主角,那么就让数据说话吧!

题目要求

我们给出一个人物列表,人物有其所属的学校。比如「松実玄」同学隶属「阿知賀女子学院」什么的。有的人物没有所属学校或没有明确给出其所属,可以无视。

人物每一次出场都会给其学校增加一点存在感。有少数“被牌爱着的孩子”,即“魔物”会有非常高的存在感,出场一次会有普通人出场两次的存在感。

我们需要统计,在给出的人物出场单中,哪个学校存在感最高,我们就把这篇动画命名为什么编。

输入格式

  • 输入文件第一行为一个整数 n ,表示有多少人物出现。下面 n 行是人物列表,每两行有两个字符串 A 和 B ,表示人物 A 属于学校 B 。没有同名人物,不会重复出现人物。
  • 下面一行一个整数 k ,表示魔物的数量。接下来 k 行,每行一个字符串,表示魔物的姓名,不保证魔物在人物列表中。
  • 接下来直到文件末尾,每行有一个字符串(空行不算),表示出场人物,可能会出现不存在于上面列表中的人物。

样例输入

7
宮永咲 清澄高校
原村和 清澄高校
片岡優希 清澄高校
園城寺怜 千里山女子高校
竹井久 清澄高校
天江衣 龍門渕高校
龍門渕透華 龍門渕高校
2
宮永咲
天江衣 原村和
高鴨穏乃
原村和
片岡優希
原村和
宮永咲

输出格式

  • 输出只有一行,即存在感最大的学校名称,并列第一则输出编码序小的一个。

样例输出

清澄高校

数据范围及要求

  • 对于 70% 的数据,总出现次数不超过 10000。
  • 对于 100% 的数据,学校数量不超过 40 ,人物数量不超过 200 ,总出现次数不超过 1000000。
  • 对于 40% 的数据,字符串中只有大写和小写字母。
  • 对于 100% 的数据,字符串中会存在大小写字母、汉字和日语假名,且长度不超过 100 。为了简化问题,输入输出文件都使用 ANSI 编码(一个东亚字符占两字节)。

模拟

屠龙宝刀点击就送

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#define N 1000005
using namespace std;
struct node
{
string name,sch;
bool flag;
}stu[N];
struct nodE
{
string sch;
int sum;
bool operator<(nodE a)const
{
if(sum==a.sum) return sch<a.sch;
else return sum>a.sum;
}
}sv[N];
bool sq[N];
int n,m,num;
int Main()
{
freopen("sakinani.in","r",stdin);
freopen("sakinani.out","w",stdout);
scanf("%d",&n);
string a,b;
for(int i=;i<=n;++i)
{
cin>>stu[i].name>>stu[i].sch;
for(int j=;j<=num;++j)
{
if(sv[j].sch==stu[i].sch)
goto flag;
}
sv[++num].sch=stu[i].sch;
flag:;
}
scanf("%d",&m);
for(;m--;)
{
cin>>a;
for(int i=;i<=n;++i)
if(stu[i].name==a) stu[i].flag=true;
}
while(cin>>a)
{
b.clear();
int sum=;
for(int i=;i<=n;++i)
if(stu[i].name==a)
{
b=stu[i].sch;
if(stu[i].flag) sum=;
else sum=;
break;
}
if(!b.size()) continue;
for(int i=;i<=num;++i)
if(sv[i].sch==b) sv[i].sum+=sum;
}
sort(sv+,sv++num);
cout<<sv[].sch;
return ;
}
int sb=Main();
int main(int argc,char *argv[]) {;}

最新文章

  1. SQL Server 维护计划实现数据库备份(策略实战)
  2. Python第一天 - 迭代
  3. Visual Studio 2012完美的拥抱GitHub
  4. SAP和Java系统的Webservice实例
  5. [NOIP2011]瑞士轮
  6. Oracle日志文件常用操作
  7. Spring——自定义属性编辑器+Bean的生存范围+Bean的生命周期
  8. 几个VB常见又内涵的错误
  9. ubuntu下安装anaconda
  10. oracle数据库occi接口写入中文乱码解决方法
  11. QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译
  12. clearfix 兼容IE6/IE7,解决ie6/ie7下多出一行的问题,bootstrap的clearfix的bug
  13. Java 8 – Filter a null value from a Stream
  14. nginx中location、rewrite用法总结
  15. 如何解决普通用户使用sudo找不到命令
  16. Python开发【Tornado】:简介与使用
  17. 第五周 day5 python学习笔记
  18. webstorm window找不到文件&#39;chrome&#39;
  19. TinkPHP去重统计查询
  20. bilingual evaluation understudy

热门文章

  1. 【Linux入门】
  2. vim 设置TAB宽度、显示行号、自动缩进、自动换行宽度
  3. 使用MailMessage发送邮件
  4. OpenStack基础知识-项目打包的步骤
  5. 转:PHP性能:序——谈ab(Apache Bench)压力测试工具
  6. MySQL的复制:MySQL系列之十三
  7. ajax异步请求问题
  8. Duff and Meat(贪心)
  9. Django基础(1)
  10. MySQL表结构,表空间,段,区,页,MVCC