8月10日学习训练总结

昨天,主要学习了并查集,按路径压缩和按秩合并去进行优化,并查集主要是在一个大集合里面找出一个最顶的代表节点,这个节点就可以代表这整个集合。并查集一般维护具有传递性的关系及其连通性。所以我们可以使用扩展域和边带权的并查集来解决。

int find(int x)
{	
	if(x!=pre[x])
	{
		int temp=find(pre[x]);
		pre[x]=temp;
	}//直接一个递归式子搞定 return x==pre[x]?x:pre[x]=find(pre[x]);
	return pre[x];
}
void join(int x,int y)
{
	int a=find(x);
	int b=find(y);
	if(a!=b)
	{
	   pre[a]=b;   //看题目的要求,看看是谁并谁 
        }
}

对于并查集,我看了两种类型的题,一种是裸板题像畅通工程,还有一种是边带权的并查集,像像食物链那种题。书上的题目大致都看了一遍。然后,大概地又看了树状数组这一节,树状数组主要支持前缀和查询和单点增加这两个功能。

今天再看一下树状数组和逆序对以及树状数组的应用等问题,再接着往下学。多看书,多看题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值