算法
文章平均质量分 58
steins_甲乙
懒人一枚
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
双指针总结
非常简单的题,一遍过,给出我的丑陋代码;第一种是我的做法,第二个是官方的,两个算法都做到了。感觉我的代码和官方给的题解差不多。似乎都是O(N)。毕竟j是从头到尾走完的,i也是,没有N2这种复杂度,就是我的判断逻辑过于复杂了,没有官方的逻辑那么清晰。你的算法只有在遇到0时才交换,非零之间不会乱序;官方算法将非零按出现顺序写入前面,也不改变顺序。原创 2025-12-10 14:27:54 · 770 阅读 · 0 评论 -
最长连续序列
开一个容纳最大元素的数组,对于每一个元素,放到这个数据的时候,看左右侧元素是否已经存在,如果单侧存在则加单侧的目前的长度,都存在的话说明自己已经连上了,就加上左右两侧的长度和自己。比如4,1,3,2就是会如图所示。但是边界条件有点麻烦,比如0元素的话,就不用判断左侧元素,只用处理右侧,还有可能最大的元素也不用判断左侧元素。话说可以这样,如果放置的元素可以把两端连接起来的话,新的连续序列的两端依旧去存放这个序列的长度。再放置5的话,5不能看到左侧的连续序列的长度是多少,好像也没办法可以解决这个问题。原创 2025-12-09 15:19:49 · 106 阅读 · 0 评论 -
天体赛之座位分配
【代码】天体赛之座位分配。原创 2025-01-18 22:18:34 · 128 阅读 · 0 评论 -
蓝桥之砝码称重
暴力过了百分之40的数据(心满意足)原创 2024-12-03 19:54:01 · 164 阅读 · 0 评论 -
有向图的强连通分量
然后搜索领点,如果领点还没有搜索过,那么就递归进入,然后等到回溯的时候用领点的追溯值更新自己的追溯值(因为领点可以达到的点自己也已i的那个可以达到)。下面的代码就是你在搜索的过程中如果一个点的领点都搜索完了,且这个点的追溯值和时间戳相等,那么这个点就是极大连通子图的代表点了。然后就是极大连通子图的数量加一,通知这个极大连通子图的点都出栈且标号,因为这个点是代表点,所以这个点在栈的最下面,所以循环走到这个点的时候结束,到这个点之前的其他点都是这个极大连通子图的点,这些点也需要标号,标志他们属于哪个点。原创 2024-07-20 17:15:59 · 1305 阅读 · 0 评论 -
整数因子分解
举个很简单的例子,如果n=6 dp[0]=1;因为数的所有因子均被列出,根据算数基本定理,n的一个可以被分解的因子分解出来的因子,一定仍然是n的因子,且这个因子比被分解之前小(显然)。由于每个质数因子都有1和它本身,所以就是dp[0]=1,在循环的过程中,质数的dp数组只会被初始化为1,而合数的dp数组则会被拆解。也就是说,每个合数的本身分解(1和自身,而且这个拆解都是由dp[0]转移过来的,而不是dp[本身],内层循环到j=i就终止了,也就是它本身不会与本身作除法)和拆解在循环过程中都会求到。原创 2024-07-12 09:09:33 · 586 阅读 · 0 评论 -
鱼塘钓鱼问题
这句话就是为了优化,找到第一个大于等于t的下标,因为在池塘间转移的时间不可能大于总的钓鱼时间吧,那还钓啥鱼呀,都去走路吧 这里举个简单的例子吧,假设i从2开始转移,也就是从第二个池塘开始转移,因为第一个池塘c[i]为0,以这个为例子讲转移不够清楚。··这里的f[i & 1][j] = f[(i - 1) & 1][j - c[i]];··第二层循环终止条件是j>c[i],因为对消耗转移时间的池塘来说,j<=c[i]的话收益一定是0,不会再有状态转移,一定要有给下一个池塘分配的时间。原创 2024-07-12 09:05:10 · 1816 阅读 · 0 评论 -
最大多子段和问题
定义以此为结尾的集合数组,dp[i]指的是以a[i]结尾的最大字段和。个人觉得是因为没有单调性,就像例子中给出来的子序列,我想维护这个连续序列和但是这个值不是单调的,比如和从11走到-4的时候,和会被更新,但是紧接着又增大了。这就破坏了双指针的单调性。这里一直搞混了更新的过程,不是res在降低(遇到负值)的时候就更新res,而是在新的元素假如序列比单独的一个元素的和要小的时候才要更新元素。例如,给定序列 {−2,11,−4,13,−5,−2},它的最大子序列为 {11,−4,13},其各元素之和为 20。原创 2024-07-12 09:01:10 · 373 阅读 · 0 评论 -
边权并查集之奇偶游戏
可以看出每个点此时维护的都只是和父亲结点的奇偶性,而在路径压缩之后,就是对根节点(此时也就是每个结点的父节点)的奇偶性质(图中未给出)。比方说,假如1是奇,2到它的距离为1,所以2是偶数,3在路径压缩之前是偶数(到2的距离是2),3作完路径压缩之后到1的距离是3,与压缩之前和1结点的奇偶性是一致的。图中也给出了解释,是+=d[fa[x]],因为递归得到的根结点,而d[fa[x]]表示父节点到根节点的距离,加上根节点的距离是没有意义的。最重要的一点是,矛盾一定产生于已经给出的条件,也就是已有的一个集合。原创 2024-07-12 08:56:56 · 758 阅读 · 0 评论 -
递归路径问题
最近写一个矩阵连乘的问题,在打印括号的时候遇到了难题,不知道括号和序列怎么输出才能得到标准的加括号序列,在网上查到了一个博客发现是对的,在此记录一下,顺便和floyed打印路径的方式作对比,以此来加深对二叉树遍历的理解。记住遇到叶结点的时候直接返回了,不会深入叶结点的空间,而且每个叶结点只遇见一次,所以在叶节点打印值是最合理的。这里给每个中序的地方加上了左括号和右括号,也是对的,但是出现了很多的冗余,因为即使有一个元素也被加上了括号。二是左括号和右括号的时机,分别是在第一次遇到结点,和离开结点的时候加上。原创 2024-07-12 08:53:06 · 227 阅读 · 0 评论 -
acwing排列树
刷acwing的算法进阶指南的时候,看到递归实现排列性枚举,刚好最近也是在上这一块的内容,于是想不看y总的代码敲一遍书上的代码,最后发现书上的排列树代码无法实现“其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。”仔细想想,书上的代码确实只是可以实现排列树的功能,但是和y总的dfs的思想还是有点不同的。答案是对的,但是输出顺序有点差别,算法思想有所不同,暂时未想到把书上的代码转换到答案要求的思路。搜索思想都不同,应该做不到吧。显然对于3,题目要求的输出是。而这个程序最后的输出是。原创 2024-07-12 08:40:24 · 294 阅读 · 0 评论
分享