“7点:幻想登上人生巅峰,9点半:认真考虑转行。”
中二病一下就治好了啊。
发现自己这么笨、这么平庸之后,真的是很想哭,可是挤了半天,终究没有挤出一滴眼泪。
很早以前我就注意到了,我并没有多少创造力,我擅长的是照本宣科、是按着一段教程复现一下,是尽量博学(死记硬背意义上的(偏偏我忘东西超级快)),然后尽量把新问题 (利用已知trick,以尽量小(最好为零)的代价) 转成已知问题。
但面对笔试,瞬间目的颤抖。
面对着巨大的解空间,各种可能性,就什么都忘了。
我并没有太多发现模式,发现不变量的创造力。
第一题,怎么看都需要memo,但是我根本看不出相同的子问题在哪。
第二题,花了快20分钟才算读懂题,笔试快结束的时候才发现最左边的一排肯定是一个从根到叶子的路径。太慢了,太笨了。
辣鸡如我,显然的东西永远不显然,只有我已经知道的才显然。。。
知道自己是个笨蛋之后,未来的路该怎么走呢?
感觉状态空间一下就收束了啊。。。-_-
上次智商不足,是玩 euclidea3 没过几关就开始看答案的时候。
上上次,是搞不定实验室的活的时候。——选择退出,看书
上上上次,是程序语言课跟不上的时候。——选择暂时不学PL,改看公开课
这次,是这个笔试0分。——还能逃到哪去呢?
知耻而后怂,我就像是碰到高浓度溶液就抱头鼠窜的真菌一样,只能凭着畏难情绪从一个领域逃到另一个领域,然后发现这里也是一样难。换过两次专业就是最好的证明吧。
没人会关心失败者说些什么,写到这我都想全删了接着打游戏算了。过两天也就忘了。
不过那样我就永远没法进步了吧。就像是西西弗斯。永远在两个状态之间死循环。
没意思啊。
外面天气真鸡儿好。
还有一堆书要看,还有一堆活要干,我要认真考虑做个啥小项目。。。
题还是要刷。
As far as I can see,已知的trick就那些,就像公理一样,聪明的解法根本没有为什么,或者说,当我们面对更复杂的问题时,不关心聪明的trick为什么聪明。从一个trick出发。收束状态,转化问题。再用另一个trick...直到最后完成问题。最聪明的解法和问题描述所蕴含的不可言状暴力解法是 commute 的。 我们所学无非是在这个状态空间中搜索而已。目标是找到一条够短的路径。
n个数,找4个加起来凑0有几种凑法的问题,聪明路径与naive路径:
(上面这个图并不是commute的,毕竟不是一个函数,当然它们的最终效果都是一样的。。。这是什么玄学)
而刷题,就是在
1,学知识——聪明的路径有哪些。看到一类数据后,可以做的常用操作有哪些,比如看到有顺序关系的数据,先排序八成没错。。。
2,积累选择的"直觉"——人的内存很小,在状态空间中搜索一般就是有限步的 dfs。不过优势在于,在每一步,我们都依靠某种“直觉”,来判断当前状态和目标状态之间的直线距离,所以可以使用某种剪枝。同时,我们会评估当前路径的累计复杂度,如果超过了问题要求的复杂度,我们就会放弃当前的思路。这好像就是A算法嘛。。。
3,精简思路:"把书读厚,再把书读薄",人的高速外存也不大。我们无法承受以繁文缛节的形式存取和处理使用知识,遗憾的是,我们对记忆的格式知之甚少。我猜,那些知识肯定是以某种高度压缩的格式存在某团蛋白质里的吧。。。刷题的同时。1,2,里的知识以不可名状的方式内化成某种程序了,也可以说,就是神经网络那套理论吧。。。"读书破万卷,下笔如有神。"学习行为本来就是一件我们自己都没搞清楚的事啊。。。
4,think backwards,上面图里那个例子是 挑战程序设计竞赛 160页的折半枚举。学了这个trick之后,我到底是学会了 (NxNxNxN) ->(NxN)x(NxN)的直觉,还是最后那步N2logN ->done 呢?我也说不清。但是如果不知道最后那步的trick,(NxNxNxN) ->(NxN)x(NxN)这步就失去了"奔头"。
公开课上说,不要倒着想证明,可是为什么到了写程序这,分治,分治+memo很“自然”,“漂亮”的自底向上的动态规划却特别难想出来呢?我们思考的起点到底应该是从(NxNxNxN)开始,从base case开始,还是先从naive的O(N4)到达结果,然后用已知trick,来倒着想?
暂时享受这愚者的节日好了,啊哈哈哈哈。
El Psy Congroo.