第五届“传智杯”全国大学生计算机大赛(练习赛)题解

A - T292219 [传智杯 #5 练习赛] 复读

题目链接

知识点:字符串

题意

 给你多个字符串,字符串为0表示所有的字符串都已读完,并且0不被认为是一个非复读字符串。如果后面的字符串与前面的字符串相同,则被当做是复读字符串,首次出现的字符串是非复读字符串。要求将所有的非复读字符串按照行号从小到大连接的结果输出。

思路

1.首先,是多个字符串因此需要动态的去进行记录

2.然后需要记录字符串的状态,将后面与前面相同的进行标记区分

3.最后将状态未改变的也就是非复读字符串进行输出

坑点

代码

#include<bits/stdc++.h>
using namespace std;
vector<string>v;
int main()
{
	string s;//读入的多个字符,所以用字符串定义 
	while(cin>>s)//当读入 字符串时 
	{
		if(s=="0")//如果说字符串等于 0,则停止读入字符串 
		{
			break;
		}
		int f=1;//定义状态为 1 
		for(auto i:v)//用 i 遍历动态数组 v 
		{
			if(i==s)//如果遍历的 i 跟字符串相同 
			{
				f=0;//那么改变状态 
				break;//并停止 
			}
		}
		if(f!=0)//如果字符串对应的状态不等于 0 的话则输出对应的字符串 
		{
			cout<<s;
			v.push_back(s);//并把字符串放入 vector数组中 
		}
	}
	return 0;
} 

总结

难度稍易,注意遍历vector需使用auto。

B - T292112 [传智杯 #5 练习赛] 时钟

题目链接

知识点:模拟

题意

给你有一个分钟数,问从出有从零至所给分钟数好时刻出现了多少次。

而好时刻是指从零到所给分钟数,而这些数依次组成了一个等差数列。

思路

1. 将所给的分钟数转化成多少天余多少个小时

2. 将时间制的四个位置的对应的数算出来

3. 从零到所给分钟数进行遍历分情况(小时数大于等于10和小时数小于10)判断是否是好时刻进行记录

坑点

1.分钟数判断需分情况分为大于等于10个小时和小于10的小时的情况进行判断

代码

#include<bits/stdc++.h>
using namespace std;
int n,days,ans=0;//分钟数,天数,好时刻数 
int main()
{
	cin>>n;//读入分钟数 
	days=n/1440;//一天共有1440分钟,用总的分钟数除以1440也就是有几天 
	n%=1440;//n%1440求出余下的分钟数 
	ans=days*39;//ans表示好时刻数,即用天数乘以39,一天共有39个好时刻 
	for(int h=0;h<24;h++)//遍历一天的小时数 
	{
		for(int m=0;m<60;m++)//再遍历一天的分钟数 
		{
			int a,b,c,d;
			a=h/10;//a表示十位上的时间 ,即几十小时 
			b=h%10;//b表示个位上的时间 ,即几小时 
			c=m/10;//c表示十位上的分钟数,即几十分钟 
			d=m%10;//d表示个位上的分钟数,即几分钟 
			if(h>=10&&b-a==c-b&&c-b==d-c)//如果大于等于10小时,当b-a==c-b并且c-b==d-c时则表示等差是好时刻 
			{
				ans++;	
			} 
			if(h<=9&&c-b==d-c)//如果小于10小时并且,那么a等于0,当c-b==d-c构成等差则属于好时刻 
			{
				ans++;//好时刻++ 
				
			}
			n--;//遍历时间 
			if(n<0)//时间遍历完了 
			{
				break;//则停止 
			}
		}
	} 
	cout<<ans<<endl;//输出好时刻数 
	return 0;
} 

总结

难度简单,各个位置的值需耐心分析,并小时数分情况进行分析。

C - T292113 [传智杯 #5 练习赛] 平等的交易

题目链接

知识点:贪心

题意

给你n个道具,并给出对应每个道具的价格,最后给出现在拥有的钱。

你可用钱购买其中的一件道具,也可拿手中的道具换取其他的道具,但是其他的道具的价值之和不能超过打算交换出去的道具。可交换多次道具,交换到的道具的价值可能为0.

问最多可换取到多少件道具

思路

1.首先排序

2. 用钱买最贵的那一个

3.用最贵的一个去尽可能换价值低的,能拿就拿。

4.进行计数

D - T292114 [传智杯 #5 练习赛] 清洁工

题目链接

知识点:模拟

E - T292115 [传智杯 #5 练习赛] 树的变迁

题目链接

知识点:数据结构(树和并查集)

F - T293037 [传智杯 #5 练习赛] 白色旅人

题目链接

知识点:动态规划

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值