摘要: DFS搜索树上有返祖边,等价于图中至少存在一个环。 充分性显然,必要性。 如果是无向图,那就只有树边和返祖边,不存在横插边,没有返祖边那就是一棵树,与图中有环矛盾。 有向图多了横叉边,但是这样不是环,是个DAG,也矛盾。 这个结论常用于深搜判环。 在Fish Graph一题中,dfs只能找到一个任意 阅读全文
posted @ 2023-11-07 09:48 Zlc晨鑫 阅读(54) 评论(0) 推荐(0)
摘要: 这篇题解中也只能找出任意环。 here 每次会把环上的后继加进去,所以刚好每个点都被加入一次。 hn[1]是终点x,然后是它的第一个邻居。 调整的证明看魏老师题解,然后这个操作: 就是找到环上第一个与x直接相连的点,然后调整环为这个环。 反证容易证明这个环是极小的。 他就是按照两条红线(任意一个)的 阅读全文
posted @ 2023-11-06 21:36 Zlc晨鑫 阅读(17) 评论(0) 推荐(0)
摘要: 杨表…… 阅读全文
posted @ 2023-11-06 16:37 Zlc晨鑫 阅读(16) 评论(0) 推荐(0)
摘要: 是我见识少了,真没见过这种的…… 传送门 如果看成有序排列的\((x,y)\)配对,那么可以写成\(r_x-l_y\)。(因为如果是负数,会在\(y,x\)的时候被枚举到,这样就不用考虑max和绝对值了)。 于是,就是分成恰好长度为\(\frac{n}{2}\)的两组,一组贡献为\(r_i\),一组 阅读全文
posted @ 2023-11-06 09:57 Zlc晨鑫 阅读(7) 评论(0) 推荐(0)
摘要: 线段树合并 空间复杂度,一般是根据操作次数来计算的,或者按照题目的空间,算出最大开多少数组。 根据感性理解,线段树的深度是\(\lceil log_2n\rceil\)的,反正\(d = \lfloor log_2n\rfloor+1\)肯定够。 那\(m\)次操作,注意这个操作不一定是原题中的询问 阅读全文
posted @ 2023-11-05 21:45 Zlc晨鑫 阅读(22) 评论(0) 推荐(0)
摘要: 今天写线段树合并的时候,忽然想到可以用vector存树,这样就不用算空间了。 然后有了下面代码: void modify(int& u,int l,int r,int p,int k) { if (!u) u=newnode(); if (l==r) { tr[u].max+=k; tr[u].id 阅读全文
posted @ 2023-11-05 13:32 Zlc晨鑫 阅读(20) 评论(0) 推荐(0)
摘要: 想象一下,冒泡排序交换的两个数一定是原数组的逆序对(反证容易证明:如果不是逆序对,相遇之后不会交换。两个数只有在相遇的时候才会使得下标相对大小互换,相遇之前一定是左的在左,右的在右。而不是逆序对的话,相遇的时候也不会交换,所以就一直不会交换)。 因为有序数组一定没有逆序对,所以逆序对一定换完了,所以 阅读全文
posted @ 2023-11-03 09:58 Zlc晨鑫 阅读(19) 评论(0) 推荐(0)
摘要: T1T2送的。 T3貌似有神仙优化方法,但是题解给的是容斥。(既然不好直接求满足条件的方案,就减去不满足条件的方案)。 T4的贪心就是:如果当前能走,就直接走,不然就向上或者向下走到第一个能走的地方。 证明: 假设之前贪心的方法能够取到一个最优解。 任意的走法为红色,贪心为蓝色。 然后你就发现可以通 阅读全文
posted @ 2023-11-03 09:19 Zlc晨鑫 阅读(98) 评论(0) 推荐(0)
摘要: https://www.luogu.com.cn/problem/CF1648C 除以相同元素个数的阶乘即可。 阅读全文
posted @ 2023-11-02 21:07 Zlc晨鑫 阅读(11) 评论(0) 推荐(0)
摘要: 本文思路来自伟大的@FxorG here 二分的单调性:如果\(mid\)可以,那么小于\(mid\)的也一定可以(从每排末尾剔除一些人即可)。 主要问题是贪心的选法。 原问题所引出的可能得选人的方案可能是离散的,比如: 2 2 5 当每排人数是2时,一下方案是一种最优解: 1个身高为1的,1个身高 阅读全文
posted @ 2023-11-02 15:45 Zlc晨鑫 阅读(81) 评论(0) 推荐(1)