就是这么一个问题。
你没发现这个培训机构很像过去的武馆、传武、江湖骗子、日本的各种仙人(自己的儿子都开分店了,徒弟还只能乖乖白白打工)?
不知道你读过硕士或博士没有,或者写过学术论文没有。如果有的话,你就知道是怎么回事。
读硕博、做科研,第一个就是明确问题,在计算机算法设计中,就是问题的表示。
前缀和,其实很简单,就是一个递归问题,是编程语言入门的作业题,例如,谭浩强的c程序设计的作业第5.10题就是前缀和的一个特例。我不知道培训老师是怎么教的。可是,我在网上搜了一下,自己都说不清楚。
差分是前缀和的逆运算。同样地,说不清楚。
其实算法设计并不难,就是一层窗户纸,捅破了,简单得很。
只要智商在线,自信,都能学会算法。
一、算法设计竞赛中的问题,大致分为计数、排列、组合、排序、检索、图、搜索等等。
二、算法设计解决问题的方法,有两个层面,一个是编程层面,一个是数学运算层面。
三、编程层面,就是递归和递推编程。用循环结构实现递推编程。用函数实现递归编程。多练习,熟能生巧。
四、数学运算层面,就是要找到一个算式:f(n)=g(f(n-1), f(n-2), ..., f(n-i)),或者f(n)的逆函数。i一般等于1或者2。
五、如果找到了这个算式,那么,递归或递推编程就很容易。
六、前缀和的递归算式,就是f(n)=f(n-1)+an。反过来,差分的递归算式,就是an=f(n)-f(n-1)。就这么一层窗户纸,对吧。这么点小玩意还神秘兮兮的,有必要吗?
七、简单的题目,静下心来,肉眼就可以发现数学算式。
八、复杂的计数、排列、组合问题,要用生成函数这个数学工具来找f(n)=g(f(n-1), f(n-2), ..., f(n-i))。
九、排序问题,先吃透经典算法,然后再看它的变种,其实就是套了一个壳(一般就是加、减)。
十、检索问题,主要是存储结构的设计,tier树、线段树,其实是小儿科。
十一、图的问题,把经典问题吃透,然后再看它的变种,都是套壳。
十二、搜索问题,把状态空间、DFS、剪枝、回溯搞清楚。
十三、一些小的编程技巧。
十四、算法设计是应用数学,不是分析数学。分析数学重在分析性质。捅破窗户纸,掌握生成函数和状态空间这两个工具的应用,谁都会算法设计(其实是编程)。
【 在 davisliuyi 的大作中提到: 】
:
: 谢谢老师。我们已经退掉了集训队,确实不适合娃。第一次课,娃看完录播,老师要求必做的3道题,他做了2题,第3题那天太晚也不知道最后做出来没有。娃自己不想跟集训队,我们家长也支持。同时,娃也表达了还想继续信奥,所以会抽时间刷算法点。我们家长啥都不懂,也不知道应该刷什么,我下载了CSP大纲,仔细研究了一下,想想这些算法都要刷完吗?而且很奇怪的是,集训队第一次课内容“差分和前缀和”,我在CSP-J和CSP-S的大纲中都没找到。大拿您能具体说说哪些算法是应该掌握的?孩子自己B站找资料学习,自己洛谷寻找配套的习题练习。
: 您说的意思我大致能明白,但可惜我们都是凡人,首先必须得融入体系,才有资格藐视体系,再次谢谢老师指点。
--
FROM 58.19.16.*