- 第三届SWPUACM新生赛-正式赛
招新正式赛题解
- 3 years ago @
A. Arknights(1)
考点
字符串
题意
T组输入,每组输入包含一个字符串S1和一个字符w,输入字符w在字符串S1出现的次数,如果为二则额外输出一行“学长好帅我好爱>v<”。
思路
字符串签到题没啥好讲的,注意一下输入有个空格
CODE
B. Heroic rescue
考点
二进制、位运算,模拟
题意
给你一个数字X,然后我们在它的二进制下可以进行两个操作:
- 如果X当前在二进制下有偶数个1那么我们将最低位上的值和1进行异或操作
- 如果X当前在二进制下有奇数个1那么我们将最高位上的值和1进行异或操作
至少通过多少次操作能让X变为0
思路
直接暴力模拟即可,因为数据才1e10,也就是最多33位,我们可以直接用二进制的左移来枚举,当然也可以先将这个数转化成二进制存在数组里面,然后再逐步操作
CODE
C. 僵尸博士的渴望
考点
字符串
我觉得是简单题 不知道为啥新生赛的时候大家都没写怎么出来,可能是字符串这块还没咋学,下面放简单好写代码 这是我用c写的
思路
题意:
每凑齐26个字母就出现一次,那么出现次数就是26个字母中拥有最少的那个。将字符串存进数组,然后记得另创一个b数组来存各个字母拥有的次数。将字符串从头到尾遍历,每遍历一个字母就将b数组对应下标为str[i]-'A'的位置的数加一,最后统计一下出现次数最少的字母的次数。 注意
读完n后要getchar();下一个表示回车的字符,不然会读进字符串。
CODE
下面的是C++版本
D. 谁是卷王?
考点
模拟
题意
按照描述找到学习成绩和综合成绩排在第一的同学,如果是同一个人则这个人是卷王否则不是。
思路
这是一个模拟题,模拟题的特点就是比较绕,难度并不大,考细心程度和阅读理解能力吧,这个题对于新手而言是比较毒瘤的。接到出题任务的时候,我就分到了模拟题,然后。。。。。。为了让大家有游戏体验,我又重新出了一个~ 这个题大概就分为三步:首先。计算学习成绩。接着,计算综合成绩。最后查找两项成绩的最大值,若是同一个人,则这个人就是“卷王”。否则,卷王就不存在。所有成绩的计算公式都在题目中给出了的哦!
CODE
E. 游程编码
考点
字符串
思路
这个题是一个字符串问题。对字符串处理对于新手来说也是不容易的,过的人还不少,大家还是挺不错的。为了降低难度,提前给出了字符串的长度,保证数字只占一位。相信大家经过练习,以后做这个题就会变得得心应手了~
CODE
F. Land Overseer
考点
数学
思路
这个题目要我们找到经过两个圆的最小距离之和,首先得理解清楚题意,只要经过了那个圆的范 围,那么就算通过了这个圆,根据题目给出的样例,大家自己画个图(因为我懒所以就不画了),路线应该是这样的,首先通过圆心在第一象限的圆的正下方(正对圆心的下方的那个圆的边界点),然后我们需要求此时到另一个圆的最小距离,那么就是把我们找到的第一个点和第二个圆心相连,然后只需要减去一个R就能得到样例给出的数据,可是实际上并不这么简单,因为如果当第一个圆与x轴相交时,算法就不一样的,路径应该是直接从原点开始沿x轴直接到达圆心位于x轴上圆的最左边的点,那么计算的方法应该就是s=2∗a−Rs=2*a-Rs=2∗a−R
下面直接上代码:
CODE
G. 24点
考点
模拟
思路
扑克牌的大小区间是【1,13】,取三个数、两个运算符。 对于除号:要想得到24点,绝对不可能出现两个除号(/)的情况,所以只有ab/c的这种情况(如果ab=24了,且c=1,那我们可以直接用abc来代替ab/c)。这里要注意数据类型,如果三个数都是int类型,对于(1111/5)的运算是可以得到24的,但是在实际运算中,这样算就是错的。(所以数据没出好,给你们捡漏了)。而如果都是double类型,就不会出现这种情况。 对于乘号:情况就比较多了,可以两个先加减再乘,也可以先乘再加减,也可以两个都是乘号。这里要注意如果是两个数先减,要取绝对值abs()。 对于加号和乘号,没什么好说的,没有两个减号,但可以有两个加号。
CODE
H. 善良的牛肉好
考点
二分、思维
题意
题意就是说这个题的输入和善良的dumpile的输入搞混了,意思就是这个题的输入就是dumpile的答案,dumpile的输入就是这个题的答案,那我们怎么知道dumpile的输入呢。 根据题的信息我们知道这个这个答案是一个数字且范围在(1,1000)闭区间。
思路
因为知道数据范围,而且不大,那我们就可以想到二分来解决,怎么二分呢我举个例子
这里我们输入一个数x,假如这个x大于500就会while(1)死循环,那么你提交返还的结果是超时(TLE),假如这个数不大于500他就不会死循环那你提交就会返还错误(WA),那想到这里就很简单了,就在dumpile那个题根据返还结果二分就好了。
小彩蛋:此题答案是206,此题题号为2002,是牛肉好对象生日。
I. 善良的dumplie
考点
二分、思维
题意
此题和善良的牛肉好题意差不多,本身这俩就是联动题,那看完了牛肉好,也应该知道dumpile该怎么做,区别就是dumpile的答案是仅包含小写字母长度为3的字符串。
思路
和牛肉好一样同样是二分,那怎么二分字符串呢,因为每个字符都有对应的ASCLL码,所以我们可以根据这个码来二分,但你要是不知道不会也可以通过枚举来试,下面展示一下枚举的例子。
通过这样的方法我们也可以知道输入的字符串是啥,具体就不赘述了思路和牛肉好一样。
小彩蛋:此题答案是"fpp",是dumpile对象的名字
J. 深海前行记
考点
思维
题意
给定两个整数n和m,表示使用技能次数(使用技能可以照亮周围)和路段长度(起点坐标为0),然后给出n个使用技能的位置,让你输出照射整个路段要求照射的最小距离。
思路
光照是发散的,在直线情况的话,也就是两边发散的 要保证路径全部照亮,也就是两两深海明珠间距都被照亮 则设一个明珠照亮距离为x,两相邻坐标为a[i],a[j] (j=i+1) 那么有 2*x>=a[j]-a[i] 因为坐标是排好序的,那么遍历一遍所有坐标即可 需要注意的是首尾两点需要特别处理一下 也即x>=a[0]-0且x>=m-a[n-1] 最后输出保留两位小数即可
CODE
K. 飞行执照
考点
物理
题意概述
带着风之翼滑行,风之翼会提供升力,荧视为质点处理。以一定的初速度,于原点飞出去。
飞行通过半径为 1 光圈即算。最后通过光圈数占总光圈数60%及以上输出Yes否则输出No。
题意分析
不难看出,这是一个平抛运动:
1.有初速度 2.中间过程受力恒定(忘了写忽略空气阻力,抱歉)
平抛运动就要考虑速度分解(刚读完高中的你们比我厉害吧 /狗头)。我们建立一个坐标系,以出发点为原点,速度方向为 x 轴正方向,下落方向为 y 轴正方向。
对速度做分解,用 x 计算下落总时长,并且利用这个时长通过时间位移公式得出下落高度,下落高度与光圈中心位置的差值小于等于 1 即可通过该光圈。
这个题还有些细节问题,欢迎私聊我讨论
可行代码
L. 签到
如果这个都不会就remake吧。。。