2020迎春杯预热总结

2020迎春杯预热总结

这次校赛预热练习题总共有15道题,题目有难有易,说是难题其实还是知识掌握的不够丰富,练习的也少。刷题的目的在于找出自己知识薄弱点甚至盲区,然后深入学习。所以提升最快的方式应该就是不断刷题+学习总结。

以下我将按题目顺序对本次做题做一个总结。

A - A + B Proble

最简单的A+B问题,即输入两个整数然后输出它们的和即可。这个题比赛肯定不会出,因为太简单了。这个题主要就是热身,然后让第一次参加比赛的人熟悉一下多次输入怎么写,不得不说我第一次接触多次输入的题还是参考了网上的代码才会的。关键词:两个整数求和、多次输入、简单。

B - ASCII码排序

三个字符从小到大排序问题。三个数字比大小大部分同学都会,但碰到字符可能还会犹豫一会。实际上,把字符看做数字就可以了,字符可以直接比较。我写这个题的比较函数时,用了3种方法,分别是:引用传递、指针传递和值传递。想体会引用传递、指针传递和值传递的具体不同可通过这个博客进行体会。关键词:字符直接比较、简单。

  • 引用传递
    形参是实参的别名,对形参的操作就是对实参的操作。在引用传递的过程中,被调函数的形式参数虽然也作为局部变量在栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参做的任何操作都影响了主调函数中的实参变量。

  • 指针传递
    形参为指向实参地址的指针,对指向形参的指针操作,就是对实参对象进行的操作。

  • 值传递
    形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调函数的角度来说,值传递是单向的(由实参传向形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。

小贴士: 关于while是否必须加花括号的问题可戳💨while循环的花括号

C - 二维数组转置

可以算为规律题。按规律输出即可。对规律敏感的人很容易能想明白。这个和校赛送分题难度差不多。唯一值得注意的就是题目输出没有规定不能有多余空格,所以输出时我可以按代码里那样写。天梯赛很多题都要求行末不能有多余空格。所以要看清题目要求,当然这道题不影响,我只是想起来了说一下提醒一下。关键字:规律题、行末是否要求不能有多余空格、难度相当于校赛送分题。

D - 启蒙练习-鸡兔同笼

纯粹的规律题。关键字:规律题、简单。

E - 操作队列

数据结构中的队列。只不过我们不必像学数据结构时那样把算法的思想自己敲一遍,经常参加竞赛的同学一般都会用C++中STL来做。(STL借助模板把常用的数据结构及其算法都实现了一遍。)这类题就属于会STL就简单、不会就难的那一类题。关键词:队列、C++STL。

F - 最短区间

尺取法经典例题。

尺取法其实也是一种模拟,是解决区间和问题的一种解决方法。尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后根据实际情况不断地推进区间左右端点得出答案。尺取法比暴力法枚举区间效率高很多。

这道题很多人会暴力求解,但一定也会超时。所以,一定要好好掌握尺取法,好好理解。关键词:尺取法、较难。

G - ProjectEuler 2

斐波那契数列题。关键就是不要暴力遍历+递归。可以参考我的代码。做的题多了就自然会了。凡是可以递归的尽量不要递归,尽量转变为线性的。关键词:斐波那契数列、转递归为线性、难度相当于校赛送分题。。

H - ProjectEuler 5

核心就是求最小公倍数。其次要注意求最小公倍数的fun()函数的参数和返回值和t必须是long long,不然就会错误。对于有些题,如果题目给的数过大或者计算过程中会产生很大的数一般就要用long long。后面几个题也必须用long long。 一般来说int范围:-2147483648~2147483647(10位)如果题目给的数有9、10位,那么就采用long long保险。关键词:最小公倍数的求法、long long。

I - ProjectEuler 3

求最大质因数,首先判断是不是因数,然后判断是不是素数。判断因数时从头判断到尾太暴力,用开方运算可以迅速把一个数缩小,这样循环的次数大大减小。然后在前半部分找到一个因数,即可通过除法迅速找到后半分的另一个因数,一次找两个。判断是不是素数可以参考代码,这个求解应该是效率最高的,值得记忆。特别注意代码中的break,大大缩短代码运行时间。如果能跳到break那个判断,肯定就是最大的质因数,直接跳出就可以,不需要在继续判断了。关键词:判断素数、开方判断因数、break优化代码、long long。

J - 修井

规律题。想明白题目的原理就好了。根据题意,数据较大,因此需要定义long long型。其次关键还在排序,排序用sort()函数就会简单得多。关键词:规律题、sort()函数、long long型。

K - 区间和

水题,没有啥多说的。

L - 队列复原2

存储时可按规律存储,后来插入时只改变下标指向即可。输出结果时,首先找到队首元素,然后根据存储规律顺腾摸瓜查找即可。关键词:按规律存储+插入改变指向+找到队首元素+按规律顺藤摸瓜输出。找准队首元素避免坑点就不难。

小贴士: 好的测试用例特别重要,我第一次因为队首元素没找准提交错误始终检查不出来错误,知道遇到一组好的测试用例直接就知道我错在哪了,也能迅速找出解题策略。

M - 单词排序

此题关键就是排序,用sort()函数直接就从小到大排好了。关键词:sort()排序、会sort()就不难。

  • sort()函数有三个参数:第一个参数是要排序的起始地址;第二个参数是要排序的结束地址;第三个参数是排序的方法,默认的排序是从小到大。
  • C++中两个字符串比较时,是把字符串的每个字符从首端开始按照ASCII值大小进行比较,若相同,依次向下比较。

N - 这里才是入门0.0

N条绳子切割成K条等长度绳子问题。若题目要求找到一个数满足一定条件且结果保留几位小数,则二分法+贪心算法。二分法不断逼近找这个数,贪心算法可以嵌在二分法里的判断条件来保证这个数满足一定的条件。关键词:N条绳子切割成K条等长度绳子、二分法、较难。

O - 谁要的数据结构作业?

根据题意sum需要定义为long long。类似于哈夫曼树这类可采用优先队列做。关键词:优先队列、哈夫曼树、long long、会优先队列就不难。

总之,还是要多做题、多学算法、多学C++STL、多注意一些格式。

永远相信美好🎈

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信小海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值