这节课完全是上机题,机试内容。
想要保持排名靠前吗?那就多在上面投入时间,一般来说投入时间与排名成正比
- 模拟题
先讲一下做过的题目类型。比如说dfs,dp,贪心,从一堆方案中涨到最优的,也叫最优化问题,方案不唯一
然后对比一下,模拟就是只有一个方案,方案是唯一的。
数据结构 优化计算。
总结:模拟不会用到特别复杂的算法,也不会用到特别复杂的数据结构。
模拟题 最重要的是什么?读题,理解题目描述的流程。
特殊乘法
题目大意:给定两个整数,求各位相乘之和。是不是可以理解成两层循环呢?
众数
题目大意:给定一个整数序列,n个非负整数,m位。求每一位的众数。
大致思路:定义一个数组。统计每一位上0-9出现的次数。输出最大的数即可
这个时候是不是用到了时间复杂度判断? 是不是发现运算量很小,可以直接暴力?
那么该如何判断时间复杂度?是不是应该找到出现运算次数最多的代码呢?是不是运算次数最多的代码段决定了时间瓶颈呢?
这个时候,根据数据范围就可以得到复杂度估计了。
糖果分享游戏
大致思路:模拟即可。
- 递推
递推最重要的是什么?定义出来递推序列是什么。是不是需要想好自己定义的An是什么意思,怎么把An算出来。
有没有发现递推,其实是特殊形式的DP。
递推数列
题目大意:给定 a0,a1,以及 an=p×an−1+q×an−2 中的 p,q。这里 n≥2。求第 k 个数 ak 对 10000 的模。
这里用到了取模的什么技巧呢?(a+b)%p == (a%p+b%p)%p
a*b%p == (a%p)*(%p)%p
吃糖果
题目大意:n块糖果,可以一天吃一块或者两块,求一共有多少种吃的方案。
解题思路:
使用递推的思路:An表示吃n块巧克力的方案数。然后将方案数分成两大类。
划分集合。会发现最后一天有两种选择,吃一块或者两块。则最后一天的方案总数就是An = An-1 + An-2.
那么有个小问题,该如何定义的递推问题的边界值呢?这个没有固定的答案,只要可以正确运算即可,符合逻辑。
- BFS
BFS 与 DFS 有什么区别呢?首先,两个是不是都是搜索方案,都可以搜索到许多方案。但是,两者的搜索策略不一样。
那么,BFS有什么优势呢?BFS可以求最短路。
AcWing3385 玛雅人的密码
题目大意:可以对一串数字进行操作,求最小的操作数,可以出现2012这四个数字。
解题思路:典型的BFS 最小步模型。
宽搜的代码模型:定义一个队列,一个距离数组。然后取出队头,循环扩展。
- 该如何学习呢? 初学者都要模仿,跟着老师,把知识转化成实践。
比如说敲代码,可以老师写一行,自己跟着敲一行。
什么叫熟能生巧?以学习编程为例,刚开始是一行一行跟着写,跟着教程或者老师,把知识点转化成产品。然后逐渐就能熟练。
那对我们以后的学习有什么启发呢? 以后读研的时候,一定要增强动手能力。
那么读研的时候,该如何做呢?多写,多调,少灌水。
AcWing 3402等差数列
题目大意:给定一个矩阵,行列满足等差数列,但是空白,需要补全。
解题思路:等差数列有什么性质?如果我们知道两个相邻的数,就可以得到等差数列的公式。
在这个题目中,只要知道行的两项,就可以得到这行全部的数字。
分析可得,这是一个不断迭代,不断变化的过程。
那该如何处理呢?想法:定义一个集合,将所有的已知信息大于等于2的行或者列加入。然后不断扩展,最终得到最后的结果。
该怎么才能提高呢? 多自己推,自己想,自己写。这个比查阅资料,问别人效果高很多。
标签:BFS,辅导课,方案,--,bfs,大意,题目,递推,等差数列 From: https://www.cnblogs.com/spock12138/p/17132760.html