第十一周总结

28 篇文章 0 订阅
21 篇文章 1 订阅

首先我想写一个题的题解,印象很深的一道题,并且一开始思路不对的一道题:

修复公路:P1111 修复公路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题意:在保证所有村庄连通的情况下,求修复所需道路的最短时间

        第一眼看这个题时,脑海里突然蹦出拓扑排序这个想法,我的思路是:根据所给条件,把目前所有的村庄以及其中的连通路线构造出来,删除有边相连的村庄(节点),最后剩下几个村庄就需要修建几条线路。后来真正画图的时候我发现我错了,两个村庄之间的道路是无向的,拓扑排序不行,我又开始想并查集这个思路,将所有的顶点放入一个并查集中,判断两个顶点是否连通,只需要判断两个顶点是否在一个集合中或者说是否拥有共同的祖先即可。部分代码:


#include <bits/stdc++.h>
using namespace std;
const int M = 100010;
int parent[1010];
struct stru
{  int x; int y; int z;
}nums[M];

bool cmp(stru a,stru b) 
{ return a.z < b.z; }

int find(int x)
{ if (x != parent[x]) parent[x] = find(parent[x]);
    return parent[x]; }

bool Union(int x,int y)
{ int a = find(x);
  int b = find(y);
  if (a != b) 
    { parent[a] = b;
       return true; }
    return false; }

       看了一些大佬的题解,这个题也可以用最小生成数 Kruskal来解答,思路为:如果要连接所有的村庄,至少要N − 1条边,那么我们只需要找到和最小且能联通所有村庄的N − 1条边即可,先将所有边放到一个集合中, 然后每次选出集合中最大的边, 用并查集判断此边此边选择后是否会产生环, 若没有的话就将此边选进生成树中, 并将累加变量去加上此边长度。

言归正传,到了期中阶段,是时候需要回头总结一下前十一周了:

1、收获心得:

知识收获:STL、思维、排序sort、搜索、并查集、拓扑排序、最短路最小生成树、数据结构、图论算法···

       大一上学期接触的是那种最简单的算法,像冒泡排序、选择排序这样子的,最初可能是死记硬背,用来解决了上学期的期末考试。但当我开始接触了STL之后,我发现这样做并不能在做题时熟练运用知识点,可能说的出来,但写不出来,其实理解了之后比死记硬背掌握的更牢固,最开始可能需要靠模板来填空,但做题做着做着就会发现能大致形成自己的思路,自己的模板。

       后来看思维题目,这与在程序设计课上看的题差别很大,一个很直白,一个需要理解题意、画图建模,还要寻找隐藏的规律,这个在codeforces上体现的尤为突出,印象很深刻的是第一次打codeforces时,并不知道要找规律突破口,硬生生的根据题意一步步写代码,结果两个小时一无所获,后来听同学讲解之后才发现。这让我不仅在读题做题时用先分析代替了直接写代码,也让我在其他科目的学习中学会了先充分理解题意之后再动手做。

2、学习习惯的改变

        改变最大的,可能是死记硬背和我的周末懒惰性了,而且也懂得总结了。课程在周六上午,首先是没法睡懒觉了,哈哈,不过却发现即使是周末,也可以过的非常充实,因为当你中午回到宿舍时,宿舍里已经没有了睡觉的氛围,这时写会作业或者干一些其它的事情也就不会犯困,效率也高了。

        其次是总结,上学期根本没有想过总结这个事情,自打开始写开总结博客之后,尤其是写了三四周之后,就会发现在其它科目的学习上,也会不由自主的开始总结,虽然有时不太正式,没有找一个本子全部写下来,但在课本上面写几个关键字、几句关键句或总结句,就能对知识思路更清晰了,等到再来复习的时候就更容易了。

        还有一个死记硬背,尤其是在这学期的高数和上学期的高数相比,上学期复习高数,全部都是在背题型甚至背答案,这学期虽然也会记一些题型,但重要的是理解了,至少不用背答案,自己可以理解着算出来了。其实对于学习习惯来讲,有了上学期的教训,加上这学期的学习改变,虽然这学期课程增加,紧迫感压力感也更强,有时也会焦虑,但会发现学的更有头绪了,记的东西也更多了。希望在之后的学习生活中会有更大的进步等着自己!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值