赛前练习十九

7-1 好!很有精神! (10分)

280px-好很有精神.png

海军学校四年级学生衡量一年级学生是否能开军舰靠的是精神值。

精神值的计算公式如下:

value=​times​​D∗length​​

其中的value代表的的是一年级学生的精神值,D代表一年级学生说话声音的分贝,length记录的是说话的句子长度,times记录的是说话的时间。

而他们会按照如下方式对一年级学生进行测试:在单位时间内(即times=1)让一年级学生依次进行自我介绍,同时记录他们说话声音的分贝,和自我介绍的内容。

现在四年级学生们已经采集了所有一年级学生的数据,他们想请你找到一年级学生里最有精神的学生(即value最大的学生),并让他开军舰。现在请你帮帮忙。

输入格式

第一行一个正整数n(1≤n≤2⋅10​4​​),代表一年级学生的人数。

接下来n行,每行输入格式如下:

name D introdutction

其中name为一个长度不超过20的字符串(即1≤∣name∣≤20),D为正整数,且0≤D≤200,introduction为长度不超过100的字符串(即1≤∣introduction∣≤100)。

所有的字符串仅由小写的英文字母组成

输出格式

输出共两行,第一行输出最大的精神值。

第二行按照如下格式输出

XXX:hao!hen you jing shen!

其中XXX请替换成精神值最大的一年级学生的名字。

如果有多个精神值最大的学生,请按照输入顺序依此按上述格式输出一年级学生的名字。

输入样例

1
pingtianyilang 0 aaaaaaa

输出样例

0
pingtianyilang:hao!hen you jing shen!

提示

对于样例,最有精神的学生是pingtianyilang,其精神值为0×6=0

//最后两个测试点答案错误
#include<iostream>
#include<queue>
#include<map>
using namespace std;
int main() {
	map<string, long long> p;
	map<string, long long>::iterator it,that;
	queue<map<string, long long>::iterator > q;
	long long n;
	cin>>n;
	string name,word;
	long long d;
	cin>>name>>d>>word;
	p[name] = d*word.length();
	it = p.find(name);
	q.push(it);
	while(--n) {
		cin>>name>>d>>word;
		p[name] = d*word.length();
		it = p.find(name);
		that = q.back();
		if(it->second>that->second) {
			while(q.empty() == false)
				q.pop();
			q.push(it);
		} else if(it->second == that->second) {
			q.push(it);	
		}
	}
	while(q.empty() == false) {
		it = q.front();
		cout<<it->second<<endl;
		cout<<it->first<<":hao!hen you jing shen!"<<endl;
		q.pop();
	}
}

7-2 日期问题 (20分)

小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非 常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期 与其对应。

比如02/03/04,可能是2002年03月04日、2004年02月03日或2004年03月02日。

给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?

输入格式:

一个日期,格式是"AA/BB/CC"。 (0 <= A, B, C <= 9)

输出格式:

输出若干个不相同的日期,每个日期一行,格式是"yyyy-MM-dd"。多个日期按从早到晚排列。

输入样例:

在这里给出一组输入。例如:

02/03/04

输出样例:

在这里给出相应的输出。例如:

2002-03-04
2004-02-03
2004-03-02

7-3 是不是顺子 (25分)

本题目要求对读入的五张Poker牌进行判断:它是否是一个正常的顺子。 说明:34567890JQKA2wW相信大家知道一二,为简化操作,0代表10,w和W代表小王和大王,大,小王可代替任意的牌哟。编程判断输入的五张牌是否会构成一个顺子(方案多个时,输出较大的,34567和0JQKA分别是最小和最大的顺子)

输入格式:

输入用五个字符代表的五张牌,系统确保输入的数据无误,但并不一定是有序排列。

输出格式:

输出这五张牌组成的顺子或输出空表示不是顺子,注意大小王可当任意的牌使用,输出的顺子要求是最大的一个,且升序排列(如果有的话)。

输入样例1:

A0KJw

输出样例1:

[0JQKA]

输入样例2:

A3452

输出样例2:

[]

7-4 旅行前的准备 (25分)

LX同学想要游遍整个中国甚至全世界!所以这个国庆假期她计划去长沙玩。但是在她做旅行前的准备的时候,她收到了老师的作业,并且要求在国庆假期结束之前上交!LX同学非常的生气,告诉了你这个消息。你也觉得实在是太过分了,但是没有办法,只好帮助LX同学完成她的作业。

老师给了LX同学两个整数,分别是 x 和 y 。每次LX同学可以从中选择一个数 num ,把这个数变成 (num+2) mod p 或 (num∗2) mod p 或 (num∗num) mod p ,请问,最少需要多少次操作,能使这两个整数相等。

输入格式:

一行三个正整数 x,y,p(3≤p≤10​6​​,1≤x,y<p) ,保证p 是一个奇数。

输出格式:

一行一个整数表示最少操作次数。

样例1

输入样例

3 4 5

输出样例

1

样例2

输入样例

2 3 5

输出样例

2

提示

样例一解释:3∗3≡4(mod5) 。

样例二解释:3∗2≡1(mod5) ,1∗2≡2(mod5) 。


7-5 基于词频的文件相似度 (30分)

实现一种简单原始的文件相似度计算,即以两文件的公共词汇占总词汇的比例来定义相似度。为简化问题,这里不考虑中文(因为分词太难了),只考虑长度不小于3、且不超过10的英文单词,长度超过10的只考虑前10个字母。

输入格式:

输入首先给出正整数N(≤100),为文件总数。随后按以下格式给出每个文件的内容:首先给出文件正文,最后在一行中只给出一个字符#,表示文件结束。在N个文件内容结束之后,给出查询总数M(≤10​4​​),随后M行,每行给出一对文件编号,其间以空格分隔。这里假设文件按给出的顺序从1到N编号。

输出格式:

针对每一条查询,在一行中输出两文件的相似度,即两文件的公共词汇量占两文件总词汇量的百分比,精确到小数点后1位。注意这里的一个“单词”只包括仅由英文字母组成的、长度不小于3、且不超过10的英文单词,长度超过10的只考虑前10个字母。单词间以任何非英文字母隔开。另外,大小写不同的同一单词被认为是相同的单词,例如“You”和“you”是同一个单词。

输入样例:

3
Aaa Bbb Ccc
#
Bbb Ccc Ddd
#
Aaa2 ccc Eee
is at Ddd@Fff
#
2
1 2
1 3

输出样例:

50.0%
33.3%
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值