10/30周总结

这周主要看的图论的相关知识,,看了树状数组与其他算法结合的题型总结以温习为主,但也学了点拓展的算法,比如floyd判圈之类的小算法,还挺好玩的。

floyd判圈也叫龟兔赛跑算法,本质其实就是双指针的操作,比如在一个图中,顶点x到y有序,顶点y到z也是相同的顺序,那么x到z也存在这个顺序。这时候如果出现x到x的顺序,就说明了图里有环,可以解决判断环以及找环的入口的问题,复杂度O(m+n),虽然没有DFS或者检测顶点的出度速度快,但胜在代码简单,好理解。

力扣例题链接

贴一下板子:

//判断入环开始的点
template <class Node>
Node *panCyc(Node *first) {
	Node *slow=first/*慢指针*/, *fast=first/*快指针*/;
	//判断是否存在环路
	do 
    {
		if (!fast||!fast->next) return nullptr;
		fast=fast->next->next;//fast需跳两下
		slow=slow->next;
	} 
    while(fast!=slow);
	fast=first;
	while (fast!=slow)//一步一步走再次相遇就是环的开始
    {
		slow=slow->next;
		fast=fast->next;
	}
	return fast;
}

关于树状数组其实是上上周看的博客,当时只是模拟了一下板子没有与其他题目什么的结合,博客里的例题基本都是树状数组的区间和啥的(本来树状数组就是做这个的),还有树状数组与二分结合的例题。

树状+差分

 上周日晚上有一场codeforces之后就一直没遇到比较合适的比赛,除去看博客就是搞codeforces800-1200的题,一方面是锻炼一下读题能力,另一方面题目比较多元,涉及比较广。马上就十一月,十一月的专题任务也发出来了,先从头开始看吧,下周看莫队算法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值