0
点赞
收藏
分享

微信扫一扫

学习日记7


      今天中午,做了一道最短路径的题,是关于昂贵的聘礼的,以前做最短路径都是用的最简单的那个弗洛伊德,这次用了dijkstra算法,这个算法比弗洛伊德要快,由于没怎么用过,是现学现用的,看了好久模板,这个题是先求出各个点与一号位置的最短路径,然后再加上本来这个点的价值,再取最小,是模板的小变形。

     中午的时候还抽空看了一下位运算,虽然没有花费太多时间,但也算是对位运算有了初步了解,这个当初学c++的时候,应该就学的,就是老师没讲,我也没看qaq。

     当做完拿到题后,边看了一道并查集的题,因为做了几道这些题中的并查集,都是模板再稍稍变变,于是我很快编完了代码(哈哈),但是提交的第一次竟然运行错误,尴尬,后来发现是数组开小了,再提交是TLE,我感觉这是不让我过得节奏,后来发现,这是因为两个点之间是无向的,距离一样,只需录入一次,还有就是改了输入输出为c语言,大小判断也改了指针,运行时间600多ms,竟然比2000ms少很多。让我很高兴,毕竟错了这么多次。

    下午,又做了一道dfs的题,一个关于撕纸片的题,这个题,是把一串数字(最多六位)分成至多六个数,他们的和要接近而不超过一个数,我刚开始是想,在dfs里用五个if语句吧,这样就把五种分割方法都包含了,但这样写起来代码长,需要复制的多,容易出错,而且回溯多,麻烦,后来用做dp题的思路想一下,第一个数字可以撕去,也可以不撕,第二个数字也是如此,这样dfs里就剩下了两个递归途径,并且包含了所有情况,只需要把特殊情况在main()函数里写好就行了,我就是其中一种情况没写好,错了,当输入数字和分割求和数字一样时,要输出两边这个数字,没注意,只输出了一边,我说怎么找不到错。但最后也已经解决了。

    今晚上就不做题了,马上就要刷完这套题了,还剩下两道,不知还要多久,实话说,我已经都读了题了,也思考过,最后一道题是拓扑排序,大过程感觉不到什么,就是输出的时候有好多细节,估计中间要用好多标记变量。还有一道捉外星人的题,题目没怎么读懂,根据样例,感觉是先bfs地图上的每个点(包括自己,所有外星人),再求最小生成树,我看过好几个样例,这样和最后答案都一样。明天再说吧。

    一天又一天,一题又一题。

    

    

举报

相关推荐

0 条评论